在同一端口自托管WCF与自托管Web服务器(HTTPListener)。可能?
问题描述:
我正在开发一个应用程序,我需要为它提供一个Web界面。我正在考虑使用WCF为Web界面提供服务,并使用我的应用程序(无IIS)自行托管。现在,如果这两个不使用相同的端口,浏览器会抱怨XSS ...在同一端口自托管WCF与自托管Web服务器(HTTPListener)。可能?
这可能吗?这是一个好主意吗?
编辑 经过一番调查后,我设法使其工作。
这里的web服务的自我主机代码:
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();
/* ... */
}
为WebService的工作,我需要做this
答
没问题。 HTTP.SYS抽象了WCF使用的HTTP内容,只要它们使用不同的路径前缀,它就允许任意数量的进程共享相同的端口。我出于完全相同的原因始终这样做。
这不适用于IIS 5.1或VS网络服务器上的XP,不过 - 以防万一你要试试。他们不是基于HTTP.SYS的,所以他们希望独占端口。其他任何东西(包括带有2个WCF主机的XP),你都很好。
答
听起来很花哨,我得看这个。如果没有其他的工作,你可以保持它作为两个独立的端口,但可能使用反向代理来整理WCF端点?
你有这样的例子吗?我尝试了一些,但没有奏效。无论从第二个(WCF或网络服务器)开始抱怨... – subb 2009-11-14 23:16:13
你使用什么网络服务器?它必须基于HTTP.SYS(IIS6 +或HttpListener等),并且您的服务必须配置为IIS尚未获取的URI路径(即,您无法在/上收听,必须be/Services/Foo或其他)。 – nitzmahone 2009-11-15 00:13:40
得到它的工作。我会将代码添加到主帖子中。 – subb 2009-11-15 18:34:12