Web Api最大参数长度

时间:2015-04-08 15:57:46

标签: c#-4.0 asp.net-mvc-5 asp.net-web-api2

我有一个非常简单的dto

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

一个不错的简单网页api

[HttpPost]
    public HttpResponseMessage rad(RisRequest request)

99%的有效时间。但是当我点击Message超过标准(> 100,000个字符和112kb)的请求时,此参数为null。请注意,APIKey仍然很好,我的RisRequest对象不是null,而只是eMessage参数。

我做了一些谷歌搜索并尝试了一堆选项

根据This link我尝试设置httpconfig缓冲区

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

我尝试了this link

中的web.config选项
<system.webServer>
  <security>
   <requestFiltering>
    <requestLimits maxAllowedContentLength="2147483648" />
   </requestFiltering>
  </security>
</system.webServer>

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

也没有运气。所有其他一些人都提出了相同的变化。 我出错的任何想法?

感谢

1 个答案:

答案 0 :(得分:1)

根据Max Parameter length in MVC

这是一个Windows限制。在您的网址中,参数是路径的一部分。窗口限制路径段长度。

你应该在注册表中更改UrlSegmentMaxLength

在以下注册表项中创建DWORD

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters

UrlSegmentMaxCount

  

最大网址路径段数。如果为零,则计数受限   ULONG的最大值。

     

有效值范围0 - 16,383