我正在研究一個最大上傳大小爲100MB的ASP.NET MVC3 Web應用程序(不是我寫的)。現在,這個Web應用程序被安裝在客戶的服務器機器上,所以如果這個值的最大上傳大小可以爲每個客戶配置,那將會很好。如果需要,他們可以訪問編輯Web應用程序的web.config。如何從web.config讀取系統值並在ASP.NET MVC中使用C#方法
現在有像這樣在web.config值:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="104857600" />
</requestFiltering>
</security>
</system.webServer>
也有這裏的另一個價值這似乎是相似的:
<system.web>
<httpRuntime maxRequestLength="104857600" executionTimeout="360" />
</system.web>
那104857600字節似乎是100MB的文件上傳限制。然而,在改變價值時,我發現這不是權威價值,也不是服從新的限制。所以經過一些挖掘之後,我發現C#代碼中的其他地方是一個硬編碼值public const double MaxContentSize = 104857600
,另一個C#方法使用該值接受/拒絕Ajax文件上傳。
所以我想我想要做的是替換代碼中的硬編碼數字,以便從web.config中的值讀取。然後,至少任何人都可以在部署網站時在web.config中更改該值。
你能做這樣的事嗎?
MaxContentSize = ConfigurationManager.systemWeb.httpRuntime['maxRequestLength'];
我在web.config中看到了一些使用appSettings的例子,例如
<appSettings><add key="MySetting" value="104857600" /></appSettings>
然後訪問它想:
ConfigurationManager.AppSettings["MySetting"]
但那就意味着將在那裏自定義值,現在我們必須3個地方去改變它在web.config中。任何人有一個想法如何正確地做到這一點?
非常感謝
感謝你這個作品!它需要兩個名稱空間包括:'使用System.Configuration;'和'使用System.Web.Configuration;'。我已經接受了你的答案,因爲如果httpRuntime部分不存在,它會有錯誤處理,它會回落到一個很好的默認值。我嘗試從Web.config中刪除整個' '部分,並且在可以到達此代碼之前,文件上傳完全失敗,所以我猜測它確實是需要的。所以,如果我擺脫了默認值代碼,那麼它會將它降低到2行,很好。 –
zuallauz