4

我通过添加“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”在 IIS 6 上设置了通配符映射,并确保未选中“验证该文件是否存在”:

  • 在 IIS 的“网站”目录上
  • 在网站上

但是,在 iisreset 之后,当我转到http://myserver/something.gif时,我仍然收到 IIS 404 错误,而不是 asp.net 错误。

有什么我错过的吗?

精度:

  • 这不适用于使用 ASP.NET MVC
  • 我宁愿不使用 iis 404 自定义错误页面,因为我有一个用于记录错误的 httpmodule(这是一个低流量的内部站点,所以通配符映射性能损失不是问题;))
4

3 回答 3

4

您需要在 Web 配置中为 gif 文件添加 HTTP 处理程序:

  <system.web>
    <httpHandlers>
      <add path="*.gif" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="true"/>
    </httpHandlers>
  </system.web>

这会强制 .Net 处理文件,然后你会得到 .Net 错误。

“/”应用程序中的服务器错误。

无法找到该资源。说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的网址:/test.gif


版本信息:Microsoft .NET Framework 版本:2.0.50727.1433;ASP.NET 版本:2.0.50727.1433

于 2008-09-19T16:53:39.253 回答
0

您可以尝试使用自定义错误来执行此操作。进入您网站属性中的自定义错误并将 404 设置为指向您网站中的 URL。像 /404.aspx 是存在的。

使用 aspnet_isapi,您希望使用 HttpModule 来处理您的通配符。像http://urlrewriter.net/

于 2008-09-19T12:23:52.927 回答
0

如果不使用 ASP.net Routing 或 URLrewriting 或某些 url 映射机制,则不能使用通配符映射。

如果你想做 404,你必须在 web.config -> 自定义错误中配置它。
然后,您可以根据需要重定向到其他页面。

3.5 SP1 中的新增功能,您将 RedirectMode 设置为“responseRewrite”以避免重定向到自定义错误页面,并使浏览器中的 URL 保持不变。

其他方法是捕获 global.aspx 中的错误并重定向。如果您需要进一步的说明,请对答案发表评论。

于 2008-09-19T13:07:55.210 回答