特殊字符导致 URL 在 ASP.NET 中出错
Special characters causes an error in URL in ASP.NET
我在 URL 中输入特殊字符导致错误。我想重定向一个特殊页面,但我做不到。
404 重定向工作正常,但 400 重定向工作不正常。
这些字符在 url 中导致问题:
1- "%" - HTTP Error 400 - Bad Request-Invalid URL
2- "&" - HTTP Error 400
3- "<" - HTTP Error 400
4- ">" - HTTP Error 400
5- ":" - HTTP Error 400
我的Web.config设置:
<system.web>
<customErrors mode="On" redirectMode="ResponseRedirect" />
</system.web>
<system.webServer>
<httpErrors>
<remove statusCode="400" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="400" path="400.aspx" responseMode="Redirect" />
<error statusCode="404" path="404.aspx" responseMode="Redirect" />
</httpErrors>
</system.webServer>
据我所知,url Bad Request-Invalid URL 是由 http.sys 而不是 IIS 或 asp.net 抛出的,因此更改自定义错误页面对于这种问题没用。
另外,http.sys的自定义错误页面是没办法修改的。
如果你想让 http.sys 允许无效 url,我建议你可以尝试在以下注册表项下创建以下 DWORD 值:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
AllowRestrictedChars 1
更多的细节,你可以参考这个article。
我在 URL 中输入特殊字符导致错误。我想重定向一个特殊页面,但我做不到。
404 重定向工作正常,但 400 重定向工作不正常。
这些字符在 url 中导致问题:
1- "%" - HTTP Error 400 - Bad Request-Invalid URL
2- "&" - HTTP Error 400
3- "<" - HTTP Error 400
4- ">" - HTTP Error 400
5- ":" - HTTP Error 400
我的Web.config设置:
<system.web>
<customErrors mode="On" redirectMode="ResponseRedirect" />
</system.web>
<system.webServer>
<httpErrors>
<remove statusCode="400" subStatusCode="-1" />
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="400" path="400.aspx" responseMode="Redirect" />
<error statusCode="404" path="404.aspx" responseMode="Redirect" />
</httpErrors>
</system.webServer>
据我所知,url Bad Request-Invalid URL 是由 http.sys 而不是 IIS 或 asp.net 抛出的,因此更改自定义错误页面对于这种问题没用。
另外,http.sys的自定义错误页面是没办法修改的。
如果你想让 http.sys 允许无效 url,我建议你可以尝试在以下注册表项下创建以下 DWORD 值:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
AllowRestrictedChars 1
更多的细节,你可以参考这个article。