c# - 特殊字符导致 ASP.NET 中的 URL 错误
问题描述
我在 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 允许 Invalid url,我建议您可以尝试在以下注册表项下创建以下 DWORD 值:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
AllowRestrictedChars 1
更多细节,你可以参考这篇文章。
推荐阅读
- javascript - Vuejs 的自定义点击跟踪
- python - 数据帧 apply() 真的比数据帧 itertuples() 慢吗?
- ruby-on-rails - 在updated_all的情况下如何处理乐观锁定?
- django - /poll/poll/result.html 中的 TemplateDoesNotExist
- python-2.7 - AttributeError:“NoneType”对象没有属性“文本”ElementTree Python
- java - 如何从关系中仅检索属性而不是实体?
- javascript - 使用 Jest 模拟在 vue 组件中导入的模块
- c++ - 在 std::cout 和 std::endl 的上下文中使用输出流缓冲区
- angular - 在 Angular 中使用 Observable 从 Express API 获取信息
- android - 任务“:app:mergeDebugResources”执行失败 - AwesomeProject