简体   繁体   English

IIS Express Asp.Net 长 URL 返回 400 Bad Request

[英]IIS Express Asp.Net long URL returns 400 Bad Request

Update:更新:

The stack trace was due to a proxy where the correct Web.Config was not altered.堆栈跟踪是由于没有更改正确 Web.Config 的代理。 However creating a new project -> ASP.NET Web Application (.NET Framework) using .NET Framework 4.6.1 the exact same bad request error is present.但是,使用 .NET Framework 4.6.1 创建新项目 -> ASP.NET Web 应用程序 (.NET Framework) 时会出现完全相同的错误请求错误。 Even after updating Web.config with the following values:即使在使用以下值更新Web.config之后:

<system.web>
  <authentication mode="None"/>
  <httpRuntime targetFramework="4.6.1" maxUrlLength="2048" maxQueryStringLength="32768" relaxedUrlToFileSystemMapping="true" />
</system.web>
...
<system.webServer>
  <security>
    <requestFiltering allowDoubleEscaping="true">
      <requestLimits maxQueryString="32768" maxAllowedContentLength="32768" />
    </requestFiltering>
  </security>
</system.webServer>

Original:原来的:

I'm having a weird problem.我有一个奇怪的问题。

The following URL with 203 characters works:以下包含 203 个字符的 URL 有效:

https://localhost:44369/api/Account/testReset/AQAAANCMnd8BFdERjHoAwE12fCl12bsBAAAA9B6VBWG0rESm48zX3kvFAgAAAAACAAAAAAAQZgAAAAEAACAAAABrejIuYGBxLG912bGeknd3Iww12b9dhdzE99tfhdGW1FPbmQAAAAAOgAAAAAIAACAAAAAWg https://localhost:44369/api/Account/testReset/AQAAANCMnd8BFdERjHoAwE12fCl12bsBAAAA9B6VBWG0rESm48zX3kvFAgAAAAACAAAAAAAQZgAAAAEAACAAAABrejIuYGBxLG912bGeknd3IwCl12bsBAAAA9B6VBWG0rESm48zX3kvFAgAAAAACAAAAAAAQZgAAAAEAACAAAABrejIuYGBxLG912bGeknd3IwCl12bsBAAAA9B6VBWG0rESm48

The following URL with 303 characters gives a stack trace error:以下包含 303 个字符的 URL 给出了堆栈跟踪错误:

https://localhost:44369/api/Account/testReset/AQAAANCMnd8BFdERjHoAwE12fCl12bsBAAAA9B6VBWG0rESm48zX3kvFAgAAAAACAAAAAAAQZgAAAAEAACAAAABrejIuYGBxLG912bGeknd3Iww12b9dhdzE99tfhdGW1FPbmQAAAAAOgAAAAAIAACAAAAAWgI6mOVdROCbpPBF71QQsivA1VaIPJuALkCN4A5kFUEAAAAAa905JtNQkjp1KFUZJks6PuShgpYDv4nQvTAJTYnzxJu5BvT3AdB12b https://开头本地主机:44369 / API /帐号/ testReset / AQAAANCMnd8BFdERjHoAwE12fCl12bsBAAAA9B6VBWG0rESm48zX3kvFAgAAAAACAAAAAAAQZgAAAAEAACAAAABrejIuYGBxLG912bGeknd3Iww12b9dhdzE99tfhdGW1FPbmQAAAAAOgAAAAAIAACAAAAAWgI6mOVdROCbpPBF71QQsivA1VaIPJuALkCN4A5kFUEAAAAAa905JtNQkjp1KFUZJks6PuShgpYDv4nQvTAJTYnzxJu5BvT3AdB12b

The length of the URL for this request exceeds the configured maxUrlLength value.此请求的 URL 长度超过了配置的 maxUrlLength 值。

Exception Details: System.Web.HttpException: The length of the URL for this request exceeds the configured maxUrlLength value.异常详细信息:System.Web.HttpException:此请求的 URL 长度超过了配置的 maxUrlLength 值。

[HttpException (0x80004005): The length of the URL for this request exceeds the configured maxUrlLength value.] [HttpException (0x80004005): 此请求的 URL 长度超过了配置的 maxUrlLength 值。]
System.Web.HttpRequest.ValidateInputIfRequiredByConfig() +9939787 System.Web.HttpRequest.ValidateInputIfRequiredByConfig() +9939787
System.Web.PipelineStepManager.ValidateHelper(HttpContext context) +53 System.Web.PipelineStepManager.ValidateHelper(HttpContext context) +53

在此处输入图片说明

This URL with 403 characters gives me 400 Bad Request page:这个包含 403 个字符的 URL 给了我 400 Bad Request 页面:

https://localhost:44369/api/Account/testReset/AQAAANCMnd8BFdERjHoAwE12fCl12bsBAAAA9B6VBWG0rESm48zX3kvFAgAAAAACAAAAAAAQZgAAAAEAACAAAABrejIuYGBxLG912bGeknd3Iww12b9dhdzE99tfhdGW1FPbmQAAAAAOgAAAAAIAACAAAAAWgI6mOVdROCbpPBF71QQsivA1VaIPJuALkCN4A5kFUEAAAAAa905JtNQkjp1KFUZJks6PuShgpYDv4nQvTAJTYnzxJu5BvT3AdB12bIobF0DrIjWDgzrTa7ddaOLWfekVuEvEZJQAAAAN9tYCLKXD6Z1BembCCgBa7XkUhs0aOsLj0euwKYaR12b799hD812bO1pMsKXwl https://开头本地主机:44369 / API /帐号/ testReset / AQAAANCMnd8BFdERjHoAwE12fCl12bsBAAAA9B6VBWG0rESm48zX3kvFAgAAAAACAAAAAAAQZgAAAAEAACAAAABrejIuYGBxLG912bGeknd3Iww12b9dhdzE99tfhdGW1FPbmQAAAAAOgAAAAAIAACAAAAAWgI6mOVdROCbpPBF71QQsivA1VaIPJuALkCN4A5kFUEAAAAAa905JtNQkjp1KFUZJks6PuShgpYDv4nQvTAJTYnzxJu5BvT3AdB12bIobF0DrIjWDgzrTa7ddaOLWfekVuEvEZJQAAAAN9tYCLKXD6Z1BembCCgBa7XkUhs0aOsLj0euwKYaR12b799hD812bO1pMsKXwl

在此处输入图片说明

The question is two parts: Why do I receive different errors and what can I do to fix it?问题分为两部分:为什么我会收到不同的错误,我可以做些什么来修复它? I know I can send the request with ?token= with route [Route("testReset")] to get it to work but this is about setting the URL length.我知道我可以使用?token=和路由[Route("testReset")]发送请求以使其工作,但这是关于设置 URL 长度。

Code:代码:

[HttpGet]
[AllowAnonymous]
[Route("testReset/{token}")]
public IHttpActionResult Test(string token)
{
    return Ok();
}

Web.config:网页配置:

<system.web>
  <httpRuntime targetFramework="4.5.2" maxUrlLength="2048" maxQueryStringLength="32768" relaxedUrlToFileSystemMapping="true" />
</system.web>

<system.webServer>
  <security>
    <requestFiltering allowDoubleEscaping="true">
      <requestLimits maxQueryString="32768" />
    </requestFiltering>
  </security>
</system.webServer>

From this thread:从这个线程:

How do I increase the maxUrlLength property in the config in asp.net MVC 3? 如何在 asp.net MVC 3 的配置中增加 maxUrlLength 属性?

On Web.config under system webserver tag u have to add this :在系统 webserver 标签下的 Web.config 上,您必须添加以下内容:

 <security>
<requestFiltering>
  <requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>

对我来说,同样问题的原因是 UrlSegmentMaxLength=260 的默认值(参见https://docs.microsoft.com/en-us/troubleshoot/iis/httpsys-registry-windows

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM