Как читать maxAllowedContentLength - PullRequest
       16

Как читать maxAllowedContentLength

4 голосов
/ 09 декабря 2011

Для моего веб-приложения у меня есть флэш-компонент для загрузки файлов. Я хотел бы обработать ограничение максимального размера файла на стороне клиента без фактической отправки этого файла на сервер. Поэтому мне нужно как-то прочитать это значение из конфигурационного файла, чтобы отправить его клиенту. В некоторых статьях, которые я нашел, говорилось, что чтение файла конфигурации напрямую не является решением, потому что его можно изменить во многих местах. Так что должен быть какой-то вызов API, но я не могу найти ...

<system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="1048576" />
        </requestFiltering>
    </security>
</system.webServer>

Ответы [ 3 ]

7 голосов
/ 01 ноября 2014

Я знаю, что это старый вопрос, но он стоил мне столько времени (потрачено впустую), что я чувствовал желание опубликовать рабочее решение для тех, кто может встать на моем пути:

Using Microsoft.Web.Administration;

uint uiMaxAllowedContentLength = 0;
using (ServerManager serverManager = new ServerManager())
{
    Configuration config = serverManager.GetWebConfiguration("Default Web Site/{{your special site}}");
    ConfigurationSection requestFilteringSection = config.GetSection("system.webServer/security/requestFiltering");
    ConfigurationElement requestLimitsElement = requestFilteringSection.GetChildElement("requestLimits");
    object maxAllowedContentLength = requestLimitsElement.GetAttributeValue("maxAllowedContentLength");
    if (null != maxAllowedContentLength)
    {
        uint.TryParse(maxAllowedContentLength.ToString(), out uiMaxAllowedContentLength);
    }

}

Убедитесь, что вы сначала загрузили и установили пакет веб-администрирования Microsoft (

PM> Инсталляционный пакет Microsoft.Web.Administration

)

Также вам может потребоваться настроить разрешение для вашего файла web.config. Дайте IUSR и IIS_IUSRS как минимум разрешение на «Чтение».

Код на самом деле с сайта Microsoft, но найти его потребовалось вечно! Надеюсь, я сэкономил вам пару часов.

Приветствия

Roman

0 голосов
/ 29 августа 2017

Без пакета веб-администрирования Microsoft:

using System.Web.Configuration;
using System.Configuration;
using System.Xml;
using System.IO;

Configuration configuration = WebConfigurationManager.OpenWebConfiguration("~");
IgnoreSection ignoreSection = configuration.GetSection("system.webServer") as IgnoreSection;
string sectionXml = ignoreSection.SectionInformation.GetRawXml();
StringReader stringReader = new StringReader(sectionXml);
XmlTextReader xmlTextReader = new XmlTextReader(stringReader);
UInt32 maxAllowedContentLength = 0;
if(xmlTextReader.ReadToDescendant("requestLimits"))
    UInt32.TryParse(xmlTextReader.GetAttribute("maxAllowedContentLength"), out maxAllowedContentLength);
0 голосов
/ 09 декабря 2011

Попробуйте следующим образом

Вы можете изменить приведенный ниже сегмент кода на основе веб-конфигурации в файле конфигурации

Мой web.config выглядит примерно так:

<system.web>
  <httpRuntime executionTimeout="30"  maxRequestLength="100"/>

Здесь вы видите, что maxRequestLength определяется как 100, который можно изменить из кода за страницей

Добавить using System.Web.Configuration;

Теперь напишите этот код, чтобы изменить значение maxRequestLength

Configuration configuration = WebConfigurationManager.OpenWebConfiguration("~");
HttpRuntimeSection httpruntinesec =
    (HttpRuntimeSection)configuration.GetSection("system.web/httpRuntime");

Вы можете использовать экземпляр httpruntinesce для установки значения.

...