在.NET 4.5.2中将.asmx添加到Nancy - 在HttpRequest.GetBufferlessInputStream之后不受支持

时间:2016-11-11 22:36:15

标签: c# asp.net web-services nancy

我正在尝试向基于Nancy的应用添加旧的.asmx网络服务。根据其他SO帖子的建议,我已经添加了

<add key="wcf:serviceHostingEnvironment:useClassicReadEntityBodyMode" value="true" />

但无济于事,我仍然得到了

  

System.Web.Services.Protocols.SoapException:运行配置文件中指定的扩展名时出现异常。 ---&GT;   System.Web.HttpException:不支持此方法或属性   在调用HttpRequest.GetBufferlessInputStream之后。          在System.Web.HttpRequest.get_InputStream()          在System.Web.Services.Protocols.SoapServerProtocol.Initialize()          ---内部异常堆栈跟踪结束---          在System.Web.Services.Protocols.SoapServerProtocol.Initialize()          在System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type,   HttpContext上下文,HttpRequest请求,HttpResponse响应,   布尔和放大器; abortProcessing)

如果我发表评论app.UseNancy(options),asmx会再次发挥作用。实际上,它甚至可以在没有useClassicReadEntityBodyMode的情况下工作。如何让asmx与Nancy合作?对于初创公司,我

var bootstrapper = new CustomNinjectNancyBootstrapper(resolver.Kernel);
var options = new NancyOptions
{
    Bootstrapper = bootstrapper,
    PerformPassThrough = c => c.Request.Path.EndsWith(".asmx"),
};
options.PassThroughWhenStatusCodesAre(HttpStatusCode.NotFound);
app.UseNancy(options);
app.UseStageMarker(PipelineStage.MapHandler);

更新,SOAP客户端是.NET 3.5,这可能是问题吗?

1 个答案:

答案 0 :(得分:0)

问题不在于南希,我删除了app.UseStageMarker(PipelineStage.MapHandler);。这是一个Owin问题,所以我要结束了。