Самостоятельный хостинг службы netTcpBinding в Application_Start - PullRequest
0 голосов
/ 09 августа 2011

Вот фон: я хочу самостоятельно разместить службу WCF, реализующую netTcpBinding, и она должна быть совместима с Windows Server 2003 / IIS6.

Я пытаюсь выяснить, возможно ли самостоятельное размещение во время события Application_Start в global.asax:

protected void Application_Start(object sender, EventArgs e)
{
        NetTcpBinding binding = new NetTcpBinding();

        binding.PortSharingEnabled = true;

        ServiceHost host = new ServiceHost(typeof(Svc), new Uri("net.tcp://xxx.x.xxx.xx:1100"));

        string address = "Tcp";

        host.AddServiceEndpoint(typeof(IService), binding, address);

        host.Open(); 
}

Но я получаю это на клиенте при попытке вызвать службу:

Could not connect to net.tcp://xxx.x.xxx.xx:1100/Tcp. The connection attempt lasted for a time span of 00:00:01.0630608. TCP error code 10061: No connection could be made because the target machine actively refused it xxx.x.xxx.xx:1100.

Моим первым инстинктом было посмотреть, была ли это проблема с портом, поэтому я открыл соответствующий порт на клиенте, но это не помогло, может ли порт сервера иметь значение?Я могу получить доступ к порту в противном случае.

Или, если это происходит из-за того, что я использую IIS6, какой способ обхода с помощью самостоятельного размещения я могу использовать для этой работы с IIS6?Должен ли он самостоятельно размещаться через консольное приложение / службу Windows или я могу самостоятельно размещаться в global.asax, как показано выше?

Спасибо.

1 Ответ

2 голосов
/ 09 августа 2011

Нет ничего проще. Использовать службу Windows . Приложение в IIS выгружается, когда того требует IIS, поэтому вы никогда не узнаете, работает ваш сервис или нет, и могут возникнуть другие проблемы.

Windows 2003 + Net.Tcp = служба Windows. Все остальное не так.

...