0

人们从外部链接到我们的网站,并且这样做,通过传递“错误参数”,实际上破坏了他们链接到的那些页面。他们通过提供这样的 URL 来做到这一点:

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

您会注意到参数名称中的 & 符号。这会导致 IIS 失败并出现以下错误:

执行 URL 失败。

at System.Web.Hosting.ISAPIWorkerRequestInProcForIIS6.BeginExecuteUrl(

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

如何配置 IIS 以在忽略查询字符串错误的情况下执行 URL?

4

1 回答 1

1

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

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

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

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

我说似乎是因为自从解决了这个问题后,我就再也没有时间投资于复制和记录了。

于 2013-02-07T10:14:56.543 回答