IIS中的主机SignalR

bRa*_*dOn 6 c# iis signalr signalr-hub

我只是想知道,过去几天它正在寻找我是否可以在IIS中托管SignalR Hub?这件事有可能吗?我找到了一个名为"自托管"的解决方案,但它是在控制台应用程序的帮助下完成的.我想在我的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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

Tim*_*mes 8

在IIS中托管SignalR就像创建一个带有SignalR Hub的网站一样简单,然后将其发布到IIS中的网站.

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

如果您在此处阅读本教程,您将找到所需内容http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr

  • 我创建了WEB API项目,并在其中实现了Hub和SignalR所需的所有逻辑.从VS运行正常,但在我在服务器上的IIS上托管之后,它无法正常工作,并且没有例外.所以,我想知道我是否需要创建另一个与WEB API不同的网站,并且主持我的SignalR逻辑. (3认同)
  • 我不明白为什么这个问题被标记为正确.链接的教程是关于使用owin自托管signalR,所以它没有解决OP关于如何在IIS托管应用程序中使用signalR的问题.在IIS应用程序中创建SignalR集线器无效. (3认同)
  • @TylerJones 我完全同意。我看了两遍那篇文章,因为我想我错过了 IIS 部分。该链接与 IIS 托管无关 (3认同)
  • @ Tim B James从他们的网站复制和粘贴不会改变任何内容。没有在IIS中托管SignalR的示例。告诉某人这很容易,并没有告诉您如何做到这一点。 (2认同)

Squ*_*ler 6

默认情况下,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 服务 -> App Dev Features -> Websocket 协议

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

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