簡體   English   中英

在IIS Express上調試ASP.NET時重復的請求

[英]Duplicated requests when debugging ASP.NET on IIS Express

我在調試ASP.NET Web應用程序(.NET 4.6.1)時發現了一種奇怪的行為。 每當發生HTTP錯誤(例如404或403)時,請求就會被復制到最多3次。

我使用fiddler測試了這個單一的問題,Intellitrace有效地向我顯示了三個相同的請求(即使我只發送一個請求)。

提琴手 的IntelliTrace

我可以看到這個問題的影響,因為管道中的任何Owin中間件都被調用了三次。 像這樣的簡單中間件:

app.Use(async (c, n) =>
{
    Debug.WriteLine("HIT!");
    await n.Invoke();
});

將打印連續三次“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>

該問題是由多個處理程序嘗試在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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM