Asp.net
如何從 web.config 中讀取系統值並在 ASP.NET MVC C# 方法中使用
我正在開發一個最大上傳大小為 100MB 的 ASP.NET MVC3 Web 應用程序(不是我編寫的)。現在這個網路應用程序被安裝在客戶的伺服器機器上,所以如果這個值最大上傳大小可以為每個客戶配置就好了。如果需要,他們有權編輯 Web 應用程序的 web.config。
現在 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"]但這意味著在其中添加一個自定義值,現在我們在 web.config 中有 3 個地方可以更改它。任何人都知道如何正確地做到這一點?
非常感謝
您可以執行以下操作:
int maxRequestLength = 0; HttpRuntimeSection section = ConfigurationManager.GetSection("system.web/httpRuntime") as HttpRuntimeSection; if (section != null) maxRequestLength = section.MaxRequestLength;