如何忽略IIS中的错误查询字符串?

时间:2013-01-25 09:40:35

标签: url iis-7 query-string

人们在外部链接到我们的网站,这样做,通过传递“坏参数”,基本上打破了他们链接到的那些页面。他们通过提供这样的URL来做到这一点:

  

http://domain.com/page.htm?ke&y=value

你会注意到中的&符号参数名称。这会导致IIS失败,并显示以下错误:

  

无法执行网址。

     

at System.Web.Hosting.ISAPIWorkerRequestInProcForIIS6.BeginExecuteUrl(

我想阻止某人有权破坏我们的网站,其次是希望用户能够访问他们想要的页面,即使链接提供商犯了错误。

如何配置IIS以执行URL而忽略查询字符串错误?

1 个答案:

答案 0 :(得分:1)

碰巧,这似乎是一个怪癖,我们的解决方案最初针对.NET 1.1,后来升级到.NET 2.0; .NET 1.1显然在全局级别(在machine.config中注册)HttpHandler,它配置StaticFileHandler来处理标准的html(* .htm)文件,.NET 2.0对此进行更改。

因此,在升级时,如果您没有在本地应用程序的配置中注册处理程序,那么在部署时,IIS将尝试处理* .htm文件并在某些情况下死亡(在这种情况下)在问题中描述。)

然后解决方法是将其添加到配置的httpHandlers部分:

<add verb="*" path="*.htm" type="System.Web.StaticFileHandler" />

我说似乎是因为自从解决这个问题以来我没有时间投资于复制和记录。