无法找到给定输入的服务器工厂:Microsoft.Owin.Host.HttpListener

jig*_*esh 53 c# signalr owin

我在窗口服务中实现了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));
        }
}
Run Code Online (Sandbox Code Playgroud)

例外:无法找到给定输入的服务器工厂:Microsoft.Owin.Host.HttpListener

sko*_*koz 84

Microsoft.Owin.Host.HttpListener程序集是WebApp.Start中的运行时引用.您需要将其包含在项目的参考中,以便可以加载.检查bin\Debug(etc)目录以确保它包含在内.也可以将它添加为nuget依赖项.

  • 您需要在“启动项目”中添加对HttpListener的引用。因此,如果在另一个项目中使用“ WebApp.Start”,请小心。 (5认同)

小智 37

安装包:

PM> Install-Package -IncludePrerelease Microsoft.Owin.Host.HttpListener
Run Code Online (Sandbox Code Playgroud)

  • 请注意,对于复制粘贴程序,除非您在应用程序中搜索未经测试的代码,否则不应使用IncludePrerelease. (31认同)

Owe*_*ing 12

使用以下命令从Nuget安装Microsoft.Owin.Host.HttpListener程序包:

PM> Install-Package Microsoft.Owin.Host.HttpListener
Run Code Online (Sandbox Code Playgroud)

(与先前的答案不同,您应避免-IncludePrerelease在生产代码中使用)