Como ler o valor do sistema a partir do web.config e usar no método ASP.NET MVC C #
Eu estou trabalhando em um aplicativo da web asp.net MVC3 (não escrito por mim), que tem um tamanho máximo de upload de 100MB. Agora, esse aplicativo da web é instalado em máquinas servidor para os clientes, portanto, seria interessante se esse valor de upload máximo fosse configurável para cada cliente. Eles têm acesso para editar o web.config para o aplicativo da Web, se necessário.
Agora há um valor no web.config assim:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="104857600" />
</requestFiltering>
</security>
</system.webServer>
Também há outro valor aqui que parece ser semelhante:
<system.web>
<httpRuntime maxRequestLength="104857600" executionTimeout="360" />
</system.web>
Que 104857600 bytes parece ser o limite de upload de arquivo de 100MB. No entanto, ao alterar o valor, descobri que esse não é o valor autorizado e não estava obedecendo ao novo limite. Então, depois de mais algumas escavações eu encontrei em outro lugar no código C # era um valor codificadopublic const double MaxContentSize = 104857600
e outro método C # estava usando esse valor para aceitar / negar o upload do arquivo Ajax.
Então, o que eu acho que gostaria de fazer é substituir esse número codificado no código para que ele leia o valor no web.config. Então, pelo menos, qualquer pessoa pode alterar esse valor no web.config ao implantar o site.
Você pode fazer algo assim?
MaxContentSize = ConfigurationManager.systemWeb.httpRuntime['maxRequestLength'];
Eu vi alguns exemplos usando appSettings no web.config, e.
<appSettings><add key="MySetting" value="104857600" /></appSettings>
em seguida, acessando-o como:
ConfigurationManager.AppSettings["MySetting"]
Mas isso significaria adicionar um valor personalizado lá e agora teríamos 3 locais para alterá-lo no web.config. Alguém tem uma idéia de como fazê-lo corretamente?
Muito Obrigado