IIS Express Asp.Net长网址返回400错误请求

时间:2018-09-20 08:35:54

标签: c# asp.net iis iis-express

更新

堆栈跟踪归因于未更改正确Web.Config的代理。但是,使用.NET Framework 4.6.1创建新项目-> ASP.NET Web应用程序(.NET Framework),则会出现完全相同的错误请求错误。即使使用以下值更新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>

原始

我有一个奇怪的问题。

以下具有203个字符的网址有效:

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

以下303个字符的URL给出了堆栈跟踪错误:

https://localhost:44369/api/Account/testReset/AQAAANCMnd8BFdERjHoAwE12fCl12bsBAAAA9B6VBWG0rESm48zX3kvFAgAAAAACAAAAAAAQZgAAAAEAACAAAABrejIuYGBxLG912bGeknd3Iww12b9dhdzE99tfhdGW1FPbmQAAAAAOgAAAAAIAACAAAAAWgI6mOVdROCbpPBF71QQsivA1VaIPJuALkCN4A5kFUEAAAAAa905JtNQkjp1KFUZJks6PuShgpYDv4nQvTAJTYnzxJu5BvT3AdB12b

  

此请求的URL长度超过配置的   maxUrlLength值。

     

异常详细信息:System.Web.HttpException:URL的长度   该请求超出了配置的maxUrlLength值。

     

[HttpException(0x80004005):此请求的URL长度   超过配置的maxUrlLength值。]
  System.Web.HttpRequest.ValidateInputIfRequiredByConfig()+9939787
  System.Web.PipelineStepManager.ValidateHelper(HttpContext上下文)+53

enter image description here

此URL包含403个字符,可显示400个“错误请求”页面:

https://localhost:44369/api/Account/testReset/AQAAANCMnd8BFdERjHoAwE12fCl12bsBAAAA9B6VBWG0rESm48zX3kvFAgAAAAACAAAAAAAQZgAAAAEAACAAAABrejIuYGBxLG912bGeknd3Iww12b9dhdzE99tfhdGW1FPbmQAAAAAOgAAAAAIAACAAAAAWgI6mOVdROCbpPBF71QQsivA1VaIPJuALkCN4A5kFUEAAAAAa905JtNQkjp1KFUZJks6PuShgpYDv4nQvTAJTYnzxJu5BvT3AdB12bIobF0DrIjWDgzrTa7ddaOLWfekVuEvEZJQAAAAN9tYCLKXD6Z1BembCCgBa7XkUhs0aOsLj0euwKYaR12b799hD812bO1pMsKXwl

enter image description here

问题有两个部分:为什么我会收到不同的错误,并且该如何解决?我知道我可以通过路由?token=使用[Route("testReset")]发送请求以使其正常工作,但这是关于设置URL长度的。

代码:

[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>

从此线程:

How do I increase the maxUrlLength property in the config in asp.net MVC 3?

2 个答案:

答案 0 :(得分:0)

在Web.config的系统Web服务器标签下,您必须添加以下内容:

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

答案 1 :(得分:0)

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