自托管 WCF 与同一端口上的自托管 Web 服务器 (HTTPListener)。可能的?

StackOverflow https://stackoverflow.com/questions/1732115

  •  20-09-2019
  •  | 
  •  

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

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

编辑经过一番调查后,我设法让它发挥作用。

这是网络服务自托管代码:

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();
    /* ... */
}

为了使网络服务正常工作,我需要做

有帮助吗?

解决方案

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

不过,这不适用于 IIS 5.1 中的 XP 或 VS Web 服务器 - 以防万一您要尝试。它们不是基于 HTTP.SYS 的,因此它们希望独占其端口。不过,如果有其他情况(包括带有 2 个 WCF 主机的 XP),您就可以开始了。

其他提示

听起来很精彩,我得看看这个。如果没有其他办法,您可以将其保留为两个单独的端口,但然后可以使用反向代理来整理 WCF 端点?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top