自托管WCF,在同一端口上具有自托管WebServer(HTTPListener)。可能?

时间:2009-11-13 21:44:37

标签: wcf httplistener

我正在开发一款应用,我需要为它提供一个网络界面。我正在考虑使用WCF为Web界面提供服务,并使用我的应用程序(无IIS)自我托管。现在,如果这两个端口没有使用相同的端口,浏览器会抱怨XSS ......

这可能吗?这是个好主意吗?

修改 经过一番调查,我成功地完成了它。

这是webservice自托管代码:

var serviceHost = new ServiceHost(typeof(CalculatorService));
serviceHost.AddServiceEndpoint(typeof (ICalculator), new WSHttpBinding(), "http://localhost:8000/webservice");
serviceHost.Open();

Console.WriteLine("CalcService is running.");
Console.WriteLine("Press Enter to terminate the service.");
Console.ReadLine();
serviceHost.Close();

这是网络主机代码:

var listener = new HttpListener();
listener.Prefixes.Add("http://localhost:8000/webconsole/");
listener.Start();
Console.WriteLine("listening");
while(true)
{
    HttpListenerContext context = listener.GetContext();
    /* ... */
}

要使网络服务正常运行,我需要执行this

2 个答案:

答案 0 :(得分:3)

是的 - 工作正常。 HTTP.SYS抽象出WCF使用的HTTP内容,只要它们都使用不同的路径前缀,它就允许任意数量的进程共享同一个端口。我出于同样的原因一直这样做。

这不适用于IIS 5.1中的XP或VS网络服务器,但以防万一你要尝试。它们不是基于HTTP.SYS的,所以他们希望获得他们的端口。但是还有其他任何东西(包括带有2个WCF主机的XP),你很高兴。

答案 1 :(得分:-1)

听起来很奇特,我得看这个。如果没有其他工作,你可以把它保持为两个独立的端口,但然后可能使用反向代理来整理WCF端点?