我的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错误。我认为它可能没有认识到集线器,但我无法弄清楚如何注册它。有什么建议吗?
**这个确切的代码在运行控制台应用程序时有效,但现在看来它正在通过服务访问**
答案 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";