IIS 10.0访问含'end'关键词的aspx页面时返回404错误
问题分析与解决方案
以下是针对IIS下含"end"关键词的ReturnUrl导致LogOn.aspx报404问题的排查方向和解决办法:
URL安全扫描模块拦截
IIS自带的URLScan或者ASP.NET请求验证机制可能将"end"判定为敏感关键词,直接拦截了请求。- 检查URLScan配置文件(路径一般为
%WINDIR%\System32\inetsrv\urlscan\UrlScan.ini),查看[DenyQueryStringSequences]节点下是否存在"end",若有则删除该条目。 - 若使用ASP.NET Framework,可在web.config中针对LogOn.aspx关闭请求验证:
<location path="LogOn.aspx"> <system.web> <pages validateRequest="false" /> </system.web> </location>
- 检查URLScan配置文件(路径一般为
URL重写规则冲突
如果站点配置了URL重写模块,可能存在规则误匹配到含"end"的ReturnUrl,导致错误跳转或返回404。- 打开IIS管理器的「URL重写」模块,逐一检查现有规则,确认是否有针对"end"字符串的匹配逻辑。可调整规则的匹配条件,比如添加排除LogOn.aspx请求的判断,或者修改正则表达式避免误触发。
自定义HTTP模块/全局请求处理逻辑拦截
应用自身的自定义HTTP模块或Global.asax中的请求处理事件(如Application_BeginRequest),可能对含"end"的URL参数做了特殊处理,返回了404。- 检查web.config中的
<modules>(IIS7+)或<httpModules>(旧版IIS)节点,排查自定义模块的代码逻辑;同时查看Global.asax文件,确认是否有针对URL参数的过滤逻辑。
- 检查web.config中的
IIS请求过滤规则限制
IIS的请求过滤功能可能配置了拒绝含"end"字符串的查询参数。- 在IIS管理器中进入站点的「请求过滤」→「查询字符串」选项卡,检查是否存在拒绝"end"的规则,若有则删除;也可直接在web.config中清理相关配置:
<system.webServer> <security> <requestFiltering> <denyQueryStrings> <clear /> </denyQueryStrings> </requestFiltering> </security> </system.webServer>
- 在IIS管理器中进入站点的「请求过滤」→「查询字符串」选项卡,检查是否存在拒绝"end"的规则,若有则删除;也可直接在web.config中清理相关配置:
内容的提问来源于stack exchange,提问作者Kamal Deka
相关产品推荐
相关产品推荐

