当URL中存在%0A时,IIS 7会返回错误请求响应。

5
我有一个应用程序,本来应该接受Salesforce发送的不安全字符,它们是%0A和%0D(目前为止...),但是它们无法正常工作。
我已将allowDoubleEscaping设置为truerequestValidationMode设置为2.0requestPathInvalidCharacters设置为BLANKrelaxedUrlToFileSystemMapping设置为truemaxRequestLength设置为1024
但这并没有起作用。然后我尝试为400设置自定义错误,以便重定向到相同的页面,而不传递Salesforce发送的数据,但这也没有起作用。
然后我尝试通过IIS 7错误页面部分做同样的事情,但仍然无法正常工作。
我该怎么做:
1.让应用程序接受这些字符? 2.或者让应用程序/IIS重定向到同一个页面进行手动输入?
所有这些都在ASP.NET MVC 3应用程序中,但我认为这并不重要,因为它可能是在调用ASP.NET运行时之前被IIS阻止了。
我需要帮助。提前感谢你!

错误是来自 ASP.NET 还是 IIS?通常可以区分,ASP.NET 有 YSOD(黄屏死亡),IIS 7 看起来...不同。 - CodingGorilla
IIS可能出了问题,它会显示白色页面并提示“Bad Request {HR} HTTP Error 400. The request URL is invalid.”。 - Gup3rSuR4c
@Alex 你有没有找到解决方法?我在 URL 中遇到了与 %0A 和 %0D 完全相同的问题。 - Geekman
@Geekman,我确实尝试过,但是已经很久了,我不确定答案是什么。无论如何,我在Web.config中有requestPathInvalidCharacters="<,>,*,&,:,\"relaxedUrlToFileSystemMapping="true"。我还在IIS中启用了Allow Double Escaping,在请求过滤>编辑功能设置下。你可以看看是否是这些设置之一,但像我说的,我不记得是什么让它起作用了。 - Gup3rSuR4c
@Alex,你列举的所有内容对我都没有起作用。也许你还记得其他什么吗? - ISens
3个回答

1

你可能想要查找的地方是IIS管理器,在服务器节点(或网站节点)上单击,然后找到请求筛选图标。转到URL选项卡,这里您可以始终允许特定的URL,或更改通常处理URL过滤的方式。我确定这些设置也可在web.config文件的配置部分中使用,但我不知道所有设置元素和属性是什么(我相信您可以搜索并轻松找到它们)。

修复此问题后,您可能还需要解决ASP.NET的问题。


0

0
也许有点晚了,但对我来说,通过更改使用 AllowRestrictedChars 注册表设置(如 https://support.microsoft.com/en-us/kb/820129 中所述)的配置异常,它起作用了。默认值为0,我将其更改为1。如果非零,则 Http.sys 接受请求 URL 中解码为 U+0000 – U+001F 和 U+007F – U+009F 范围的十六进制转义字符。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接