2016-05-24 1 views
-1

Мы строим приложения на следующий стек:Как я могу получить различные максимальные длины сегмента запроса с моего веб-сервера?

  • .NET 4.6.1
  • ASP.NET MVC 5
  • IIS 8

Мы люди генерируя очень долго искать фильтровать строки запроса в нашем приложении. В настоящее время полученные запросы GET приводят к исключению на сервере. Мы хотели бы предупредить их, если их строка запроса будет слишком длинной, вместо того, чтобы отправлять недопустимый запрос GET.

Наш .js парень может проталкивать запросы AJAX, чтобы поддерживать проверку длины для полного URL-адреса и строки запроса довольно легко. Проблема в том, что мы не хотим предполагать, что мы знаем правильные максимальные длины для этих значений. Мы хотим запросить сервер, чтобы узнать, какие максимальные длины для URL и querystring есть, и просто использовать их динамически на стороне клиента.

Я могу построить конечную точку веб-API, чтобы вернуть эти значения очень легко, но у меня проблемы с Я получаю правильные значения. Например, я могу прочитать наш конфигурационный файл непосредственно и искать такие вещи, как это:

<system.webServer> 
    <security> 
     <requestFiltering> 
     <requestLimits maxUrl="2000" maxQueryString="2000" /> 
     </requestFiltering> 
    </security> 
</system.webServer> 

Однако, я не определенного, что действительно авторитетное место для поиска. Я надеюсь, что кто-нибудь знает, как использовать C# задать IIS следующие вопросы и быть уверены иметь правильные ответы:

  1. Какова максимальная допустимая длина URL для запроса GET к текущему приложению ?
  2. Какова максимальная длина разрешенной строки запроса для запроса GET для текущего приложения?
+1

Почему бы просто не использовать AJAX POST, а не GET AJAX, так что вы не имеете беспокоиться о ограничениях длины строки запроса? – NightOwl888

+0

Поскольку мы отправляем запросы на услуги REST, и мы хотим придерживаться указанного намерения для каждого типа запроса. В нашем проекте POST предназначен для создания вещей. –

ответ

0

Вот как вы можете прочитать значения конфигурации - которые затем могут быть возвращены вашим API:

var config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath); 
var section = config.GetSection("system.webServer"); 
var xml = section.SectionInformation.GetRawXml(); 
var doc = XDocument.Parse(xml); 
var element = doc.Root.Element("security").Element("requestFiltering").Element("requestLimits"); 
var maxUrl = element.Attribute("maxUrl").Value; 
var maxQs = element.Attribute("maxQueryString").Value; 

Имейте в виду, что хотя клиент (браузер) наложит свой предел, как может прокси сервера.

Нижеследующий ответ SO подразумевает, что вы должны указать , чтобы установить ограничение в элементе httpRuntime ... хотя это и не объяснено почему. См: How to configure the web.config to allow requests of any length

Эта статья на www.asp.net также может быть полезным в отношении дополнительной информации, увеличивающих допустимый размер URL: http://www.asp.net/whitepapers/aspnet4#0.2__Toc253429244

 Смежные вопросы

  • Нет связанных вопросов^_^