找不到给定输入的服务器工厂: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
程序集是 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 包时要小心。