Есть роутер — у него есть реальный IP (допустим 213.180.193.11
), но нет доменного имени.
Есть компьютер подключенный к этому роутеру и допустим у него имя Computer и ip 192.168.0.199
Допустим у роутера прокинут порт 80 на компьютер Computer.
Как я должен настроить службу, которая запускается из консольного приложения, чтобы можно до неё достучаться например из интернета скажем так схематично по адресу
http://213.180.193.11:80 ???
Набросок кода такой:
Служба
using (ServiceHost managerHost = new ServiceHost(typeof(Manager), new Uri("http://192.168.0.199:80")))
{
managerHost.AddServiceEndpoint(typeof(IManagerContract), GetHttpBinding(), string.Empty);
while (Console.ReadKey(true).Key != ConsoleKey.Escape) ;
}
//................
private static WSDualHttpBinding GetHttpBinding()
{
WSDualHttpBinding binding = new WSDualHttpBinding(WSDualHttpSecurityMode.None);
binding.Security.Message.ClientCredentialType = MessageCredentialType.None;
return binding;
}
Клиент
Client client = new Client(new InstanceContext(new Test()), GetHttpBinding(), new EndpointAddress(new Uri("http://213.180.193.11:80")));
client.Test();
//................
class Client : DuplexClientBase<IManagerContract>, IManagerContract
{
public Client(InstanceContext callbackInstance, Binding binding, EndpointAddress remoteAddress)
: base(callbackInstance, binding, remoteAddress) { }
public void Test()
{
return base.Channel.Test();
}
}
private static WSDualHttpBinding GetHttpBinding()
{
WSDualHttpBinding binding = new WSDualHttpBinding(WSDualHttpSecurityMode.None);
binding.Security.Message.ClientCredentialType = MessageCredentialType.None;
return binding;
}
такой код не прокатывает. Клиент сразу же ругется кодом 417
Он видимо очень хочет чтобы за место
http://213.180.193.11:80 было
http://Computer:80 Но доменного имени у реального IP нет. Как тут быть, если не прибегать к файлу
C:\Windows\System32\drivers\etc\hosts?
Почему WCF предпочитает в URI имя компьютера нежели его IP? И как его заставить понимать IP если это возможно?
Помогите пожалуйста, хочу разобраться с этим начальным этапом проектирования серверной-клиентской части!