2015-04-08 3 views
1

У меня есть очень простой DTOWeb длина Api макс параметр

public class RisRequest 
{ 
    public string APIKey { get; set; } 
    public string Message { get; set; } 
} 

и приятный легкий веб-апи

[HttpPost] 
    public HttpResponseMessage rad(RisRequest request) 

99% времени это работает. но когда я нахожу запрос, где сообщение длиннее нормы (> 100 000 символов и 112kb), то этот параметр имеет значение null. обратите внимание, что APIKey по-прежнему хорош, мой объект RisRequest не является нулевым, а только параметром eMessage.

Я сделал некоторые прибегая к помощи и перепробовал кучу вариантов

согласно This link Я попытался установить буфер httpconfig

config.Formatters.FormUrlEncodedFormatter.ReadBufferSize = int.MaxValue/10; 

Я попробовал варианты web.config в this link

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

и

<system.web> 
    <httpRuntime maxRequestLength="2097152" /> 
</system.web> 

и не повезло ни с одним из них. все другие предлагают вариант того же. Любые идеи, в которых я ошибаюсь?

Спасибо

ответ

1

Согласно Max Parameter length in MVC

это ограничение окна. в вашем URL-адресе параметр является частью пути. окна ограничивают длину сегментов пути.

Вы должны изменить UrlSegmentMaxLength в regedit.

создать значение DWORD в следующем Регистери ключ

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters

UrlSegmentMaxCount

Максимальное количество сегментов URL-пути. Если нуль, счетчик ограничен максимальным значением ULONG .

Действительный диапазон значений 0 - 16 383

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