C# 如何增加Azure IIS请求中HTTP标头值的大小限制?

C# 如何增加Azure IIS请求中HTTP标头值的大小限制?,c#,asp.net,http,azure,iis,C#,Asp.net,Http,Azure,Iis,令牌在GET请求的授权标头中传递,如下所示: Authorization: Bearer <token here> 授权:持票人 通过反复试验,我发现头值限制必须在2048左右,因为令牌小于该值的请求会在不做任何更改的情况下传递到我的ASP.NET应用程序,而令牌较大的请求会在我的应用程序中删除授权头 应用程序已发布到Azure。请求是GET还是POST似乎并不重要 限制看起来类似于,所以我增加了允许的查询字符串,但没有帮助 IIS版本:8.0(来自响应标头)默认情况下,标头长度

令牌在GET请求的授权标头中传递,如下所示:

Authorization: Bearer <token here>
授权:持票人
通过反复试验,我发现头值限制必须在2048左右,因为令牌小于该值的请求会在不做任何更改的情况下传递到我的ASP.NET应用程序,而令牌较大的请求会在我的应用程序中删除授权头

应用程序已发布到Azure。请求是GET还是POST似乎并不重要

限制看起来类似于,所以我增加了允许的查询字符串,但没有帮助


IIS版本:8.0(来自响应标头)

默认情况下,标头长度限制为65536,该限制在HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters注册表中设置。我在本地机器和Azure Web应用程序上都进行了测试。下面是我测试的代码

在服务器端,我使用

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return Content(Request.Headers["Authorization"]);
    }
}
在客户端,我使用

static async void SendRequest()
{
    HttpClient client = new HttpClient();
    string token = "";
    for (int i = 0; i < 2050; i++)
    {
        token = token + "0";
    }
    client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
    HttpResponseMessage message = await client.GetAsync("http://xxx.azurewebsites.net/");
    string content = await message.Content.ReadAsStringAsync();
    Console.WriteLine(content);
}
静态异步void SendRequest()
{
HttpClient=新的HttpClient();
字符串标记=”;
对于(int i=0;i<2050;i++)
{
令牌=令牌+0;
}
client.DefaultRequestHeaders.Authorization=new System.Net.Http.Headers.AuthenticationHeaderValue(“承载者”,令牌);
HttpResponseMessage=await client.GetAsync(“http://xxx.azurewebsites.net/");
string content=wait message.content.ReadAsStringAsync();
Console.WriteLine(内容);
}
我可以取回授权参数

使用试错法,我发现头值限制必须在2048左右

修改限制的另一种方法是headerLimits配置部分。我们可以使用这个配置部分为特定的头添加长度限制

如果我将以下配置添加到web.config。来自我客户的请求被阻止,我得到以下错误

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits>
        <headerLimits >
          <add header="Authorization" sizeLimit="2048" />
        </headerLimits>
      </requestLimits>
    </requestFiltering>
  </security>
</system.webServer>

如果我增加sizeLimit以满足请求授权头的长度,例如2058。请求将正常执行

因此,请检查您是否修改了web.config文件中的headerLimits配置部分。如果是,则如果此标头的长度大于限制值,它将阻止您的请求。为了解决这个问题,我们可以增加sizeLimit的值来修改授权头的限制

尚未尝试-查看是否-查看示例
web.config
部分。嗯。