Asp.net

如何從 web.config 中讀取系統值並在 ASP.NET MVC C# 方法中使用

  • January 9, 2013

我正在開發一個最大上傳大小為 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;

引用自:https://stackoverflow.com/questions/14248515