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

本文关键字:Microsoft Owin Host HttpListener 工厂 服务器 输入 找不到 | 更新日期: 2023-09-27 18:32:23

I have implemente signalR in window service.

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

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

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

安装软件包:

PM> Install-Package Microsoft.Owin.Host.HttpListener

使用以下方法从 Nuget 安装 Microsoft.Owin.Host.HttpListener 包:

PM> Install-Package Microsoft.Owin.Host.HttpListener

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

您好,相同的错误消息,但在我遇到的上下文中略有不同:

由于愚蠢的引用优化,这在反射方面完全不成熟。碰巧 MsBuild 不会复制启动项目中的 Microsoft.Owin.Host.HttpListener.dll 如果它引用了另一个使用 Owin 的项目。

就我而言,我有上面提到的错误消息,并通过添加有问题的 dll 的显式使用来选择使用 Owin 的项目显式引用,以便 msbuild 看到所需的引用,因此 Microsoft.Owin.Host.HttpListener.dll 将被复制(其他 dll 不需要) - 这个问题来自这样一个事实,即 owin 的东西在自身内部进行反射,通过删除这个 dll 使 msbuild 完全是假的-:

using Microsoft.Owin.Host.HttpListener;
...
    _log.Debug("Loading type: "+ typeof(OwinHttpListener) + "..."); // Hack to force copy of Microsoft.Owin.Host.HttpListener.dll on target referencing project

我遇到了同样的错误。

在项目 A 中 -- 我正在使用函数中的 WebApp.Start() 启动 owin Web 服务。在项目 B 中,我在这里调用项目 A 的函数。不幸的是,项目 B 不是我的 .Net 解决方案的启动项目。项目 C 是我的 .Net Solution 启动项目。

如果我在解决方案的启动项目(即项目)中使用命令安装包Microsoft.Owin.Host.HttpListener 安装 nuget 包,它可以正常工作。如果我在项目 B 中做同样的事情,它不起作用。因此,在安装 nuget 包时要小心。