【问题标题】:Self-Hosting WCF with Self-Hosting WebServer (HTTPListener) on the same port. Possible?自托管 WCF 与同一端口上的自托管 WebServer (HTTPListener)。可能的?
【发布时间】:2009-11-13 21:44:37
【问题描述】:

我正在开发一个应用程序,我需要为它提供一个网络界面。我正在考虑使用 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();
    /* ... */
}

为了让 web 服务正常工作,我需要做 this

【问题讨论】:

    标签: wcf httplistener


    【解决方案1】:

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

    这不适用于 IIS 5.1 中的 XP 或 VS 网络服务器,但以防万一您要尝试。它们不是基于 HTTP.SYS 的,因此它们希望以独占方式获取它们的端口。其他任何东西(包括带有 2 个 WCF 主机的 XP),您都可以使用。

    【讨论】:

    • 你有这样的例子吗?我尝试了一些东西,但没有奏效。第二个开始的任何东西(wcf 或网络服务器)都在抱怨......
    • 您使用的是什么网络服务器?它必须基于 HTTP.SYS(IIS6+ 或 HttpListener 等),并且您的服务必须配置有 IIS 尚未抓取的 URI 路径(即,您不能监听 /,它必须是 /Services/Foo 或其他)。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-08-28
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      相关资源
      最近更新 更多