【问题标题】:Host SignalR in IIS在 IIS 中托管 SignalR
【发布时间】:2014-10-17 05:19:45
【问题描述】:

我只是想知道,过去几天一直在寻找我,是否可以在 IIS 中托管 SignalR 集线器?那件事可能吗?我找到了一个名为“自我托管”的解决方案,但它是在控制台应用程序的帮助下。我想在我的 IIS 中托管 SignalR Hub,这可能吗?有人可以给我一个例子吗?

我将发布自我托管的代码,我认为我可能会有所帮助

class Program
    {
        static void Main(string[] args)
        {
            // This will *ONLY* bind to localhost, if you want to bind to all addresses
            // use http://*:8080 to bind to all addresses. 
            // See http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx 
            // for more information.
            string url = "http://localhost:8080";
            using (WebApp.Start(url))
            {
                Console.WriteLine("Server running on {0}", url);
                Console.ReadLine();
            }
        }
    }
    class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.UseCors(CorsOptions.AllowAll);
            app.MapSignalR();
        }
    }
    public class MyHub : Hub
    {
        public void Send(string name, string message)
        {
            Clients.All.addMessage(name, message);
        }
    }

【问题讨论】:

    标签: c# iis signalr signalr-hub


    【解决方案1】:

    在 IIS 中托管 SignalR 就像使用 SignalR Hub 创建网站,然后将其发布到 IIS 中的网站一样简单。

    SignalR Hub 然后将位于http://www.yourdomain.com/

    如果你按照这里的教程,你会发现你需要什么http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr

    【讨论】:

    • 应该将 signalR 发布在特定网站上,或者它可以托管在与 WEB API 相同的 url 上
    • 我创建了 WEB API 项目,并在其中实现了 Hub 和 SignalR 所需的所有逻辑。从 VS 运行可以正常工作,但是在我在服务器上托管 IIS 后它无法正常工作,并且没有例外。所以,我想知道是否需要创建另一个与 WEB API 不同的网站并托管我的 SignalR 逻辑。
    • 我不明白为什么这个问题被标记为正确。链接的教程是关于使用 owin 的自托管 signalR,因此它没有解决 OP 关于如何在 IIS 托管应用程序中使用 signalR 的问题。简单地在 IIS 应用程序中创建 SignalR 集线器没有任何效果。
    • @TylerJones 我完全同意。我看了那篇文章两次,因为我想我错过了 IIS 部分。该链接与 IIS 托管无关
    • @Tim B James 从他们的网站复制和粘贴不会改变任何东西。没有在 IIS 中托管 SignalR 的示例。告诉别人这很容易并不能告诉你如何去做。
    【解决方案2】:

    默认情况下,IIS 上未启用 Websocket 支持。它是在 IIS 8 中引入的,必须从 Windows 的可选功能中启用:https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-8/iis-80-websocket-protocol-support

    可选功能 -> IIS -> WWW 服务 -> 应用开发功能 -> Websocket 协议

    免责声明:我自己问了一个问题后发现了这个,所以我从那里复制了我的答案:https://stackoverflow.com/a/61411666/4364057

    如果有人在我之后发现了这个问题,我想提供一个我认为比接受的问题更好的问题的有效答案。

    【讨论】:

      【解决方案3】:

      自托管信号器服务器的部署是以管理员权限运行控制台 exe。 192.168.1.10 是本地计算机 IP。其他设备可以通过signalr连接url。

      fullIP = @"http://" + "192.168.1.10" + @":9001" SignalR = WebApp.Start(fullIP);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-16
        • 2016-01-22
        • 1970-01-01
        • 1970-01-01
        • 2013-07-14
        • 2017-07-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多