SignalR Service 404 Hub

时间:2014-06-05 20:56:41

标签: c# windows-services signalr

我的SignalR主机位于一个简单的Windows服务应用程序中。

protected override void OnStart(string[] args)
{
    const string url = "https://localhost:8080";

    AppDomain.CurrentDomain.Load(typeof(MyHub).Assembly.FullName);

    using (WebApp.Start<Startup>(url))
    {
        Log(string.Format("Device Hub started on {0}", url));
    }
}

MyHub是引用的控制台项目中Hub类的名称,而Startup只是

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.MapSignalR();
        app.UseCors(CorsOptions.AllowAll);
    }
}

SignalR似乎开始了,但我在https://localhost:8080/signalr/hubs上一直收到404错误。我认为它可能没有认识到集线器,但我无法弄清楚如何注册它。有什么建议吗?

**这个确切的代码在运行控制台应用程序时有效,但现在看来它正在通过服务访问**

3 个答案:

答案 0 :(得分:1)

您可能需要检查以下内容:

http://allen-conway-dotnet.blogspot.ch/2012/02/applying-and-using-ssl-certificate-with.html

它不像http或https + IIS那么简单。

<强>更新

好的,我仔细阅读了,我认为你有一个重大错误,你在Start块内调用using(...)方法,这意味着你立即关闭你的主机({{ 1}}方法退出)。删除你的OnStart块,它应该可以工作(我用http测试了它。)

此外,鉴于您的项目中引用了using(...)这一事实,根本不需要AppDomain内容。

答案 1 :(得分:0)

配置如何:link 只是出于好奇:集线器只能使用HTTP吗? (没有SSL?)

编辑:将网址从https://localhost:8080更改为https://127.0.0.1:8080,然后重试。

答案 2 :(得分:0)

将连接字符串上的端口更改为443,如下所示

const string url = "https://localhost:443";

或不使用ssl

 const string url = "http://localhost:8080";