我在窗口服务中实现了signalR。
private IDisposable SignalR { get; set; }
public void Configuration(IAppBuilder app)
{
var hubconfig=new Microsoft.AspNet.SignalR.HubConfiguration();
hubconfig.EnableJSONP = true;
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR(hubconfig);
}
private void StartSignalRServer(StringBuilder sbLog)
{
try
{
this.SignalR = WebApp.Start(ServerURI); //This throws exception
//this.SignalR= WebApp.Start<Startup>(ServerURI);
sbLog.Append(string.Format("{0}--------SignalR Server Started------",Environment.NewLine));
}
catch (Exception ex)
{
sbLog.Append(string.Format("{0}Exception in StartSignalRServer=>{1}", Environment.NewLine,ex.Message));
}
}
异常:无法找到给定输入的服务器工厂: Microsoft.Owin.Host.HttpListener
答案 0 :(得分:74)
Microsoft.Owin.Host.HttpListener程序集是WebApp.Start中的运行时引用。您需要将它包含在项目的引用中,以便可以加载它。检查bin \ Debug(etc)目录以确保它包含在内。也可以将它添加为nuget依赖项。
答案 1 :(得分:34)
安装包:
PM> Install-Package -IncludePrerelease Microsoft.Owin.Host.HttpListener
答案 2 :(得分:5)
使用以下命令从Nuget安装Microsoft.Owin.Host.HttpListener程序包:
PM> Install-Package Microsoft.Owin.Host.HttpListener
(与先前的答案不同,您应该避免在生产代码中使用-IncludePrerelease
)
答案 3 :(得分:-1)
我遇到了同样的错误。
在项目A中-我正在使用函数中的WebApp.Start()启动owin Web服务。 在项目B中-我在这里调用项目A的功能。不幸的是,Project B不是我的.Net解决方案的启动项目。 项目C是我的.Net解决方案启动项目。
如果我在解决方案的启动项目(即Project)中使用命令Install-Package Microsoft.Owin.Host.HttpListener安装nuget软件包,则C可以正常工作。如果我在Project B中执行相同的操作,将无法正常工作。因此,在安装nuget软件包时要小心。