http://site.com/page%3fcharacter
Run Code Online (Sandbox Code Playgroud)
此URL将返回以下错误:
Illegal characters in path.
Run Code Online (Sandbox Code Playgroud)
我已将它放在web.config中:
<system.web>
<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" />
<pages validateRequest="false">
...
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个错误?
Dea*_*ing 26
如果要允许请求通过,则需要添加requestPathInvalidCharacters
并将其设置为空字符串:
<system.web>
<httpRuntime requestPathInvalidCharacters="" />
</system.web>
Run Code Online (Sandbox Code Playgroud)
编辑您应该保留原始问题,因为现在我的答案没有意义.
但是在回答你的第二个问题时,那是因为%3f对应于'?' 在Windows上的文件名中不允许这样做.您可以将relaxedUrlToFileSystemMapping
属性设置true
为更改此行为:
<system.web>
<httpRuntime requestPathInvalidCharacters=""
relaxedUrlToFileSystemMapping="true" />
</system.web>
Run Code Online (Sandbox Code Playgroud)
您可能希望查看HttpRuntimeSection类中的所有属性,以查看是否存在可能适用的其他任何属性.
您还可以实现RequestValidator的子类并设置web.config以使用您的子类(可能会允许所有URL通过?).就个人而言,我不会打扰,只是让内置类处理它.普通用户不太可能在路径中偶然输入"%3f",为什么要为恶意用户改进用例而烦恼呢?
顺便说一句,这实际上是ASP.NET 4中的一个新功能,这就是为什么Stack Overflow不会发出错误:它在.NET 3.5上运行.
Mih*_*kel 14
这是Hanselman的一篇很好的文章,解释了与你的问题相关的所有角落和缝隙:
Wackiness中的实验:在ASP.NET/IIS请求URL中允许百分比,尖括号和其他顽皮的东西
归档时间: |
|
查看次数: |
21177 次 |
最近记录: |