我在窗口服务中实现了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
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 引用另一个使用 Owin 的项目,MsBuild 不会复制启动项目中的 Microsoft.Owin.Host.HttpListener.dll。
在我的例子中,我有上面提到的错误消息,并选择在使用 Owin 的项目中显式引用,方法是添加有问题的 dll 的显式使用,以便 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
也许我的回复有点晚了,但我会留下我的解决方案,以防它对某人有用。
我在库中使用Owin,我的主要项目是Windows服务,我不想在我的Windows服务中引用Owin,所以我在库中的解决方案如下:
// x falls out of the habit immediately and disappears.
{
Microsoft.Owin.Host.HttpListener.OwinHttpListener x;
}
_webApp = WebApp.Start<Startup>(url: baseAddress);
这样主项目就不必引用Owin,这也没有意义,因为它不会被使用。
我遇到了同样的错误。
在项目 A 中——我在函数中使用 WebApp.Start() 启动 owin Web 服务。 在项目 B 中——我在这里调用项目 A 的函数。不幸的是,项目 B 不是我的 .Net 解决方案的启动项目。 项目 C 是我的 .Net 解决方案启动项目。
如果我在解决方案的启动项目(即 Project, C)中使用命令 Install-Package Microsoft.Owin.Host.HttpListener 安装 nuget 包,它工作正常。如果我在项目 B 中做同样的事情,它就不起作用。所以安装 nuget 包时要小心。