Nancy自托管HttpListenerException:"参数不正确"

时间:2014-10-04 10:22:18

标签: c# nancy self-hosting

我通过github安装了NancyFX 0.23.2源码,并在Windows 7 x64上使用VS2013 Pro构建。我可以很好地构建,但当我通过GenericFileRespose返回任何时,我得到:

A first chance exception of type 'System.Net.HttpListenerException' occurred in System.dll
---
System.Net.HttpListenerException (0x80004005): The parameter is incorrect
   at System.Net.HttpResponseStream.Write(Byte[] buffer, Int32 offset, Int32 size)
   at System.IO.Stream.InternalCopyTo(Stream destination, Int32 bufferSize)
   at Nancy.Responses.GenericFileResponse.<>c__DisplayClass1.<GetFileContent>b__0(Stream stream) in h:\home\projects\nancy\0.23.2\Nancy\src\Nancy\Responses\GenericFileResponse.cs:line 82
   at Nancy.Hosting.Self.NancyHost.OutputWithDefaultTransferEncoding(Response nancyResponse, HttpListenerResponse response) in h:\home\projects\nancy\0.23.2\Nancy\src\Nancy.Hosting.Self\NancyHost.cs:line 320
   at Nancy.Hosting.Self.NancyHost.ConvertNancyResponseToResponse(Response nancyResponse, 
...

如果我链接到通过nuget检索的Nancy二进制文件,我的输出很好,但我没有Nancy的调试信息。

我启动了Nancy自我主机演示,它似乎工作正常,但如果我能说出我的项目有什么不同,那就很危险。一切都是为“任何cpu”而构建的。 Nancy是使用目标.net 4.0客户端配置文件构建的,Nancy.Hosting.Self目标是.net 4.0已满,我的类库和启动NancyHost的控制台应用程序也是如此。

非常感谢任何见解。

1 个答案:

答案 0 :(得分:0)

我可以回答这个问题,因为没有其他人这样做过。

必须有一些有点可疑的东西,就像我为Nancy.Serialization.JsonNet 0.23.2安装源代码一样,它使用的是Nancy 0.23.2我通过nuget获得,但不是来自github的Nancy 0.23.2源代码。 JsonNetBodyDeserializer.Deserialize()引用了BindingContext.ValidModelProperties,但这在Nancy 0.23.2源中不存在;它已被BindingContext.ValidModelBindingMembers(包括属性和字段)取代。

当我检索,编译和使用Nancy 0.23.1的源代码时,Nancy.Serialization.JsonNet很高兴,我的System.Net.HttpListener异常消失了。

所以,我的解决方案是使用Nancy 0.23.1,但我仍然不知道为什么0.23.2不起作用。