2009-06-24 94 views
17

我想爲maxRequestLength設置多個設置 - 文件大小上傳限制(例如File/New,其他圖片/新)。我所有的動作都有其他參數(例如/ File/New?folderId = 234)。ASP.NET MVC中的文件大小上傳限制:在web.config中超過1 maxRequestLength設置

單張設置按預期工作:

<httpRuntime executionTimeout="60" maxRequestLength="1024" /> 

我想有2個設置在根web.config 2段位置,但沒有成功。我不確定要在「路徑」中寫什麼 - 視圖的物理aspx頁面,或者控制器+動作......但是,似乎沒有任何工作。

<location path="/File/"> 
    <system.web> 
     <httpRuntime executionTimeout="60" maxRequestLength="4096" /> 
    </system.web> 
</location> 
<location path="/Picture/"> 
    <system.web> 
     <httpRuntime executionTimeout="60" maxRequestLength="1024" /> 
    </system.web> 
</location> 

我試圖把另一個web.config文件中的特定視圖文件夾(如/視圖/圖片/ ...),就像它在經典的Webform ASP.NET,但這似乎並沒有做訣竅要麼...

<location path=""> 
    <system.web> 
     <httpRuntime executionTimeout="60" maxRequestLength="1024" /> 
    </system.web> 
</location> 

不管我做什麼,只有一個httpRuntime.maxRequestLength值應用於 - 在(根)web.config中...... System.Web程序。

回答

11

相信Path屬性不應該開始或以「/」結尾 - 所以你應該有:

<location path="File"> 
    <system.web> 
    <httpRuntime executionTimeout="60" maxRequestLength="4096" /> 
    </system.web> 
</location> 
<location path="Picture"> 
    <system.web> 
    <httpRuntime executionTimeout="60" maxRequestLength="1024" /> 
    </system.web> 
</location> 

你的虛擬或物理目錄級別Web.config的不應該有<位置>元素。

這應該排除你。

Location element的文檔甚至有這個非常例如:

下面的代碼示例演示瞭如何設置上傳文件大小限制爲128 KB只有指定的頁面。

<configuration> 
    <location path="UploadPage.aspx"> 
    <system.web> 
     <httpRuntime maxRequestLength="128"/> 
    </system.web> 
    </location> 
</configuration> 
+0

你當然是對的。我嘗試了各種可能的變化(「圖片」,「/圖片」,「圖片/」,「/圖片/」,「視圖/圖片」等),但發佈我的問題時,我選擇了「/圖片/顯然是錯的。但是,由於某些其他原因,它不起作用。我重構了代碼(改變了參數提供的方式 - 現在作爲查詢字符串參數),它開始正常工作,但我不太確定問題出在哪裏。 :-( 不管怎麼說,還是要謝謝你! :-) – Alex42 2009-06-30 22:13:51

0

該解決方案是不完整的,因爲IIS 7的 「請求篩選」 設置默認限制爲30MB。你應該增加這個參數,詳見my blogpost

相關問題