2013-07-02 55 views
0

時,IIS處理請求的時間要長得多在我的ASP.NET MVC3應用程序中,我有兩個非常簡單的控制器操作,其中一個返回ContentResult,帶有一小段硬編碼文本和另一個一個返回代碼爲403的HttpStatusCodeResult當請求來自另一臺計算機並返回HTTP 200和文本

應用程序已部署,然後一組請求發送到該控制器所服務的路由從同一臺計算機執行多次,然後將相同的請求包發送到這些路由另一臺電腦。沒有配置更改之間執行,應用程序池不重新啓動 - 沒有那樣。

我查看IIS日誌,看到time-taken(請求在Web服務器內部花費的時間,不包括任何網絡延遲,DNS查找等),根據請求是從同一臺計算機發送還是不同,不是也取決於哪些行爲被調用。如果它來自同一臺計算機time-taken對於這兩個操作都是大約15毫秒。如果從另一臺計算機的time-taken是行動大約260毫秒返回ContentResult和大約100毫秒的操作返回403

顯然有任何內容是否會在迴應主體返回的依賴關係,當請求來自另一臺計算機。

我的代碼沒有任何明確的邏輯改變請求的處理方式,這取決於它們的來源和結果。

什麼可能會導致時間差異?

+0

正在使用Windows身份驗證? –

+0

@Damien_The_Unbeliever:你的意思是NTLM?不,web.config只啓用表單身份驗證,但我不確定它在某些時候沒有啓動。 – sharptooth

+0

@Damien_The_Unbeliever:我嘗試通過編輯'web.config'來移除'WindowsAuthentication'模塊 - 時序沒有變化。 – sharptooth

回答

0

因此,來自本地主機的請求比來自遠程計算機的請求更快。這非常有意義 - 本地主機不需要向網絡發出網絡請求,找到遠程主機,通過網絡發送請求,然後等待響應。話雖如此 - 如果你的應用程序在本地需要15ms,即使是相對較近的網絡也需要260ms,那麼速度很慢:)。

+0

'time-taken'在服務器端的IIS日誌中,Web服務器需要爲請求提供服務,該服務不包括網絡延遲,DNS查找等,就像Web服務器本身發生的一樣。 – sharptooth

+0

它不包括花費從傳入緩衝區中讀取的時間? – Kylar

+0

從緩衝區中讀取肯定不是問題 - 時間依賴於應用程序返回的HTTP代碼。 – sharptooth

相關問題