找不到OWIN HttpListener


72

当我尝试开始时:

WebApp.Start<SrvcHst>(new StartOptions { Port = 9956, 
     ServerFactory = "Microsoft.Owin.Host.HttpListener" });

我得到以下异常。可能是根本原因?

System.MissingMemberException was caught
  HResult=-2146233070
  Message=The server factory could not be located for the given input: Microsoft.Owin.Host.HttpListener
  Source=Microsoft.Owin.Hosting
  StackTrace:
       at Microsoft.Owin.Hosting.Engine.HostingEngine.ResolveServerFactory(StartContext context)
       at Microsoft.Owin.Hosting.Engine.HostingEngine.Start(StartContext context)
       at Microsoft.Owin.Hosting.Starter.DirectHostingStarter.Start(StartOptions options)
       at Microsoft.Owin.Hosting.Starter.HostingStarter.Start(StartOptions options)
       at Microsoft.Owin.Hosting.WebApp.StartImplementation(IServiceProvider services, StartOptions options)
       at Microsoft.Owin.Hosting.WebApp.Start(StartOptions options)
       at Microsoft.Owin.Hosting.WebApp.Start[TStartup](StartOptions options)

是否Microsoft.Owin.Host.HttpListener.dll与您的应用一起部署在主程序集旁边?或者,您可以将其添加为对此项目的引用,并将其复制到bin目录。
Marcel N.

@MarcelN。是。它已被添加为该项目的参考。
GilliVilla 2014年

Answers:


131

您必须Microsoft.Owin.Host.HttpListener.dll在项目参考中包含。

您可以通过NuGet添加它。

但是,如果代码执行:

WebApp.Start<SrvcHst> (...);

包含一个内类库请确保可执行消耗库还包括参考Microsoft.Owin.Host.HttpListener.dll,否则它不会被部署与您的程序,因为有从类库它没有明确提及。

查看您的bin/Debug文件夹,并确保DLL存在。


3
谢谢皮埃尔。改善您的答案的建议:我不想将引用手动添加到将使用我的库的所有应用程序中。取而代之的是,我只是从自己的程序集中引用HttpListener程序集中的内容(所有内容),以便强制构建将该DLL引入应用程序的输出文件夹。
Bent Tranberg

好点子; 实际上,您只需要确保Microsoft.Owin.Host.HttpListener.dll包含这些内容即可。但是,这取决于您自己:-)
Pierre Arnaud 2015年

8
为什么这不是Microsoft.Owin.Hosting的依赖项?
乔什·萨特菲尔德

您需要设置粗体 以确保使用该库的可执行文件还包含引用
qakmak

47

确保您已安装软件包 Microsoft.Owin.Host.HttpListener

要安装软件包,请使用以下命令行:

Install-Package Microsoft.Owin.Host.HttpListener

我对此DLL进行了引用,但由于某种原因,它没有被复制到bin目录中。然后,我尝试了您的建议通过Nuget安装它,并且它起作用了。现在将其复制到“输出”目录
Tobias Koller 2015年

您需要在“启动项目”中添加对HttpListener的引用。因此,如果WebApp.Start在另一个项目中使用,请小心。
Johann67 '18 / 12/3

7

有时,NuGet引用以不完整的状态添加。如果已安装软件包,但是不包括参考,请尝试通过以下方法重新安装它们:

Update-Package -reinstall

在软件包管理器控制台中。


我也尝试过使用Update-Package -reinstall,但是在过程中出现错误,所有软件包都已删除。我手动不得不再次添加所有引用...所以要小心;)
Tobias Koller 2015年

只需从源代码管理中还原packages.config,或确保您事先进行备份
Daniel Park

0

除了Pierre和Damith的答案外,还有一点点补充。如果使用的是Mac OS,请运行以下命令来安装HttpListener

dnu install Microsoft.Owin.Host.HttpListener
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.