【问题标题】:IIS Wildcard Mapping not working for ASP.NETIIS 通配符映射不适用于 ASP.NET
【发布时间】:2008-09-19 12:02:53
【问题描述】:

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

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

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

我错过了什么吗?

精度:

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

【问题讨论】:

  • 你在使用 ASP.net 路由吗?
  • 不,它只是用于处理 404,但在 IIS 中没有自定义错误页面

标签: asp.net iis


【解决方案1】:

您需要在 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 并确保其拼写正确。

请求的 URL:/test.gif


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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-19
        • 1970-01-01
        • 2023-03-19
        • 2010-09-24
        • 2017-03-05
        • 2016-03-07
        • 2010-09-14
        • 2020-12-25
        相关资源
        最近更新 更多