4

我最近对 ​​SignalR 产生了兴趣,但是无论多么简单,我都还没有生产出一个可以工作的服务器。

我遵循了 GitHub Self Host文档,但收到了令人讨厌的 500 错误。

我使用的代码如下(基本上是 GitHub 代码):

class Program
{
    static void Main(string[] args)
    {
        string host = "http://localhost:2804";
        
        using (WebApplication.Start<InitialConf>(host))
        {
            Console.WriteLine("Server started on {0}", host);
            Console.ReadKey();
        }
    }
}

class InitialConf
{
    public void Configuration(IAppBuilder appBuilder)
    {
        var config = new HubConfiguration
        {
            EnableCrossDomain = true
        };

        // Map to default /signalr route
        appBuilder.MapHubs(config);
    }
}

class fooHub : Hub
{
    public void DisplayTimeOnServer()
    {
        Console.WriteLine(DateTime.Now.ToString());
    }
}

浏览以http://localhost:2804/signalr产生 500 错误:

HTTP/1.1 500 Internal Server Error
Content-Length: 0
Server: Microsoft-HTTPAPI/2.0

我在应用程序中没有收到异常/错误,所以我不确定它为什么会这样。

有人对这些问题有任何经验吗?或者也许可以引导我获得关于此事的更好的文档?

谢谢

4

3 回答 3

2

问题是您的 Hub 类是私有的。只需将其更改为公开即可。

public class fooHub : Hub
{
    public void DisplayTimeOnServer()
    {
        Console.WriteLine(DateTime.Now.ToString());
    }
}
于 2016-01-13T12:38:10.980 回答
1

您是否尝试在服务器上进行调试?

而且您在 Hub 中缺少一个功能/定义来通知您的客户:

Clients.All.addMessage(message);

除此之外,我建议您检查以下资源:

SignalR 主页 - 教程:http ://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr

Scott 的介绍:http ://www.hanselman.com/blog/AsynchronousScalableWebApplicationsWithRealtimePersistentLongrunningConnectionsWithSignalR.aspx

于 2013-03-07T08:55:01.583 回答
1

为您的连接设置路由似乎有任何问题。应用程序运行后,您应该能够转到 /signalr/hubs 并查看有关集线器的详细信息。

于 2013-03-07T19:34:02.703 回答