http://site.com/page%3fcharacter
此URL将返回以下错误:
Illegal characters in path.
我已经将这个放在了web.config文件中:
<system.web>
<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" />
<pages validateRequest="false">
...
我该如何修复这个错误?
http://site.com/page%3fcharacter
Illegal characters in path.
我已经将这个放在了web.config文件中:
<system.web>
<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" />
<pages validateRequest="false">
...
如果你想允许请求通过,你需要添加 requestPathInvalidCharacters
并将其设置为空字符串:
<system.web>
<httpRuntime requestPathInvalidCharacters="" />
</system.web>
编辑: 你应该保留原来的问题,因为现在我的回答已经没有意义了。
但是回答你的第二个问题,这是因为%3f对应着'?',而在Windows文件名中不允许使用'?'。你可以将relaxedUrlToFileSystemMapping
属性设置为true
以更改此行为:
<system.web>
<httpRuntime requestPathInvalidCharacters=""
relaxedUrlToFileSystemMapping="true" />
</system.web>
你可能需要浏览 HttpRuntimeSection 类中的所有属性,看看是否有其他适用的属性。
你也可以实现一个 RequestValidator 的子类,并设置你的 web.config 使用你的子类(这将允许所有 URL 通过)。但是,就我个人而言,我不会费心去改变内置类的处理方式。普通用户很少会在路径中意外输入 "%3f",何必要花那么多力气来改进恶意用户的使用情况呢?
顺便说一下,这实际上是 ASP.NET 4 中的一个新功能,这就是为什么 Stack Overflow 不会出现错误:它正在运行 .NET 3.5。
可能是因为它看起来很像一个格式不正确的URL。
& 用作查询字符串参数的分隔符,例如:site.com/page?some=20&another=15