2012-01-25 37 views
1

我已經發布了ASP.NET MVC3站點。它運行得很好。然而,回頭看我的web.config文件,我不確定我使用的某些值是否適合發佈和開發。這些配置位於<system.web>部分。ASP.NET MVC3在web.config中發佈設置

... 
    <system.web> 
    <httpRuntime requestValidationMode="2.0" executionTimeout="200" maxRequestLength="20000000"/> 
    <compilation debug="true" targetFramework="4.0"> 
... 

我讀到這裏(http://msdn.microsoft.com/en-us/library/e1f13641.aspx),使用debug = true可在編纂會忽略的200 executionTimeout,並使用110的默認值這似乎是這種情況,而網站是設置爲允許非常大量文件一次上傳。然而,只有110秒,沒有太多可以上傳。

我的問題是:正確的設置發佈一個真實的網站調試「假」?此外,考慮到asp.net現在在版本4上(即將是4.5)是requestValidationMode =「2.0」還安全使用?

+2

當調試爲真時,沒有執行超時。發佈時應始終將debug設置爲false,如果需要的時間長於默認值,則應明確設置executionTimeout。 – dotjoe

+0

是的,我意識到上傳實際上正在發生,但其他地方存在瓶頸。我試圖一次上傳9MB的照片,但上傳後不會再拍攝。如果我分別做它,它可以工作,但不是一次全部完成。 –

+0

你在IIS 7+上嗎?如果是這樣,請確保請求篩選maxAllowedContentLength未配置爲低。我認爲這是相當大的默認.... – dotjoe

回答

3

Validationmode 2.0不是框架版本,可以保持那樣。

Put debug = false,你很好。

2

requestValidationMode ......據我所知,這如果你想允許特殊字符(<,>,%等)的請求數據通過ASP.NET的請求被設定爲2.0所有的驗證。 requestValidationMode =「2.0」的意思是「只強制驗證頁面(即.aspx),而不是每請求(如4.0中所介紹的)。這允許ASP.NET MVC接管驗證 - 因此也可以讓你如果您確定已應用[ValidateInput(false)]或使用[AllowHtml]的任何行動或控制器已得到妥善保護以免受到攻擊,Imran俾路支有完整的解釋說明here

是的,由於以下幾個原因,包括性能和內存使用情況,調試應該是「false」,並且debug =「true」將靜態文件的默認緩存策略更改爲永遠不會疼痛瀏覽器中的文件,這意味着大量的腳本,CSS等冗餘請求。

至於圖片上傳,除了給出的建議,檢查事件查看器,它不是真正的應用程序池回收的原因之一或其他,而不是執行超時。