【问题标题】:Setting Max Request Url Length in Asp.net Core 2.2在 Asp.net Core 2.2 中设置最大请求 URL 长度
【发布时间】:2020-01-06 02:19:34
【问题描述】:

我有一个操作方法,它接受用户 ID(Guid)和令牌(url 编码字符串)作为 Asp.net Core 2.2 项目中的 Web api 端点,如下所示:

[HttpGet]
[Route("{userId}/confirm/{token}")]
public async Task<IActionResult> GetConfirmationAsync([BindRequired, FromRoute] string userId, [BindRequired, FromRoute] string token)
{
        var result = await _userService.GetConfirmationAsync(userId, token);

        if (!result.Success) return StatusCode((int)result.HttpStatusCode, new ErrorDetailsResource(result.Messages.ToList(), result.Exception));

        return Ok();
}

当我提交带有短令牌字符串的请求时,例如

http://localhost:44353/api/Account/d73d17fc-9f58-471a-9f21-312aede320fc/confirm/CfDJ8Jcfzk

请求通过。但是,当我提交如下请求时:

http://localhost:44353/api/Account/d73d17fc-9f58-471a-9f21-312aede320fc/confirm/CfDJ8JcfzkHibeBAsl9sKBtm51FA6t6I91nMeDwJjMNi0lkxw8OzLRIat7U9zx5feED0xz426GjJlzbr9e3AWfGBrZXhsstZvDTNBdbpMnr7diBSIMnWeBa3RE5Rqay2G%252fc3QxgizIcmOp%252fOtIFoca5X3kOMhV3dJ%252bYSwccpKLwosMNbHkcRQ9Hi3qWhtWBV4FRYT5tlqZyIWR863AeXE3fiNGdmvaCkZLReNxMCT8N8riT6bWhr7ZrboEmW3JIcrsvlvw%253d%253d

当我在 IIS Express 中运行应用程序时收到以下消息:

错误请求 - 无效的 URL HTTP 错误 400。请求 URL 无效

我在Program.cs中尝试过如下配置,但还是不行

WebHost.CreateDefaultBuilder(args)
   .UseConfiguration(configuration)  
   .ConfigureKestrel(options =>
   {
      options.Limits.MaxRequestBufferSize = 512000 * 1024; 
      options.Limits.MaxRequestLineSize = 512000 * 1024;                        
   })
   .UseStartup<Startup>()
   .Build();

我可以在哪里配置以在 Asp.net Core 2.2 中设置最大请求网址长度以使请求有效?

感谢您的帮助!!

【问题讨论】:

标签: asp.net-core asp.net-core-webapi


【解决方案1】:

您看到的最大分段长度为 260 个字符。您的编码字符串有 284 个字符。有关详细信息,请参阅Link。有一种解决方法,您可以在此处更改注册表中的条目Link

【讨论】:

  • 如果您使用的是 aws elastic beanstalk 或 azure web 应用程序之类的 web 应用程序,或者在 linux 上运行 asp.net core,该怎么办?有什么关于启动的吗?
猜你喜欢
  • 2020-02-13
  • 2013-11-02
  • 2015-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-08
  • 2017-03-07
相关资源
最近更新 更多