[英]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.