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

时间:2014-11-27 10:33:01

标签: 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));
        }
}
  

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

4 个答案:

答案 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软件包时要小心。