Fed*_*uma 5 c# asp.net iis iis-express owin
我在调试ASP.NET Web应用程序(.NET 4.6.1)时发现了一种奇怪的行为.每当发生HTTP错误(例如404或403)时,请求就会被复制到最多3次.
我使用fiddler测试了这个单一的问题,Intellitrace有效地向我显示了三个相同的请求(即使我只发送一个请求).
我可以看到这个问题的影响,因为管道中的任何Owin中间件都被调用了三次.像这样的简单中间件:
app.Use(async (c, n) =>
{
Debug.WriteLine("HIT!");
await n.Invoke();
});
Run Code Online (Sandbox Code Playgroud)
将打印连续三次"HIT!" 进入控制台.
这种情况仅在请求生成错误时发生,而不是在请求由中间件处理时发生(例如,如果中间件以2XX状态代码响应则不会).
这是怎么回事?
我在Win10上运行VS2015和IIS Express 10.
[编辑]它可能与我的Web.config配置有关?我正在添加一段摘录.
<system.web>
<compilation debug="true" targetFramework="4.6.1" />
<httpRuntime targetFramework="4.6.1" enableVersionHeader="false" />
</system.web>
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
</customHeaders>
<redirectHeaders>
<clear />
</redirectHeaders>
</httpProtocol>
<security>
<requestFiltering removeServerHeader="true" />
</security>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
该问题是由多个处理程序尝试管理 IIS Express 中未处理的请求引起的。我通过在 Web.config 中删除它们解决了这个问题:
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrl-Integrated-4.0" />
<remove name="ExtensionlessUrl-ISAPI-4.0_32bit" />
</handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
689 次 |
| 最近记录: |