2011-09-01 98 views
5

我有一个本应接受来自Salesforce的不安全字符的应用程序。他们是%0A和%0D(到目前为止),他们不工作。当网址中存在%0A时IIS 7错误请求响应

我已经设置allowDoubleEscapingtruerequestValidationMode2.0requestPathInvalidCharactersBLANKrelaxedUrlToFileSystemMappingtruemaxRequestLength1024

它没有工作。然后我尝试为400设置一个自定义错误,以重定向到同一页面而不传递Salesforce发送的数据。也没有工作。

然后我试着通过IIS 7 Error Pages部分做同样的事情,但它仍然没有工作。

如何我:

  1. 获取应用程序接受的人物?
  2. 或者让应用程序/ IIS重定向到手动输入的相同页面?

所有这些都在ASP.NET MVC 3应用程序中,但我怀疑这很重要,因为它甚至可能会在IIS调用ASP.NET运行时之前停止它。

我很感激一些帮助。提前致谢!

+0

错误是来自ASP.NET还是IIS?你通常可以区分,ASP.NET有YSOD(死亡的黄色屏幕),IIS 7看起来...不同。 – CodingGorilla

+0

可能是IIS,它是白色的,并说“错误的请求{HR} HTTP错误400.请求URL无效。” – Gup3rSuR4c

+0

@Alex你有没有找到解决这个问题?我在网址中遇到与%0A和%0D完全相同的问题。 – Geekman

回答

1

您可能希望看到的地方是在IIS管理器中,单击您的服务器节点(或网站节点),找到Request Filtering图标。转至URL选项卡,您可以在此处始终允许特定的URL,或者更改通常处理URL过滤的方式。我确定这些设置在web.config文件的部分也是可用的,但我不知道所有的设置元素和属性会是什么(我确信你可以做一个搜索并轻松找到它们)。

修复此问题后,您可能不得不打败ASP.NET。

0

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