【问题标题】:How do you set handler mapping to a directory in IIS 6.0?如何设置处理程序映射到 IIS 6.0 中的目录?
【发布时间】:2009-06-25 17:33:11
【问题描述】:

我的开发机器上有 IIS 7.0,我的服务器上有 IIS 6.0。在我的开发机器上,我能够在我的站点内名为 /ViewHtml/ 的目录上设置处理程序映射,并将其映射到 asp.net。在我的 global.asax 中,我检查发送到 asp.net 的 /ViewHtml/ 请求,并提供位于此应用程序虚拟目录之外的适当 html 文件(Doc、Power Point 或 Excel 文件的 html 版本)。我这样做是因为所有文件都受权限保护,由于可扩展性,我们不想将这些文件放入数据库中,我需要在服务器上隐藏这些文件的路径。这一切都在 IIS 7.0 中完全按照我的意愿工作。虽然我无法让我的 IIS 6.0 服务器配置为将所有请求映射到该目录到 asp.net。

有什么想法吗?谢谢各位?

【问题讨论】:

    标签: asp.net iis-6


    【解决方案1】:

    我使用您正在使用的相同配置设置了一个 Web 应用程序,我也得到了 404。我不知道为什么它在 IIS 7 中有效,但这是我必须做的修复它。

    创建一个实现 System.Web.IHttpHandler 类的类。将代码从 Application_BeginRequest 移动到 IHttpHandler.ProcessRequest 的实现。

    现在您只需向 ASP.NET 注册您的 HTTP 处理程序。为此,请在 /configuration/system.web/httphandlers 的 Web.config 中添加一个条目。

    Web.config 示例:

    ...
    <httpHandlers>
        <clear />
        <add verb="*" path="*" type="namespace.classname, assemblyname" />
    </httpHandlers>
    ...
    

    该条目告诉 ASP.NET 通过在 HTTP 处理程序中运行代码来处理具有任何扩展名和任何 HTTP 方法的 HTTP 请求。请注意,我还清除了所有先前定义的处理程序(在机器的 web.config 中定义)。

    请注意,您仍然需要在 IIS 中配置应用程序映射。

    【讨论】:

    • 我做了与上面在配置中建议的完全相同的事情。我不太确定需要在配置下的应用程序映射中添加什么?我将 .html 添加为应用程序扩展之一,可执行文件指向 .net 2.0 的 aspnet_isapi.dll。 global.asax 中也没有任何内容。我仍然找不到页面。有人可以帮忙吗?
    【解决方案2】:

    如果我正确理解了这个问题,听起来您需要为您的虚拟目录添加一个“通配符应用程序映射”。换句话说,您希望将所有请求转发到任何文件扩展名到 ASP.NET 的 ISAPI 扩展名。

    为此,请打开虚拟目录的属性。在 Virtual Directory 标签(如果是网站,则为 Home Directory 标签),点击 Configuration... 按钮。在显示的对话框中单击底部列表框旁边的 插入... 按钮。在此对话框中,选择“%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”作为可执行文件,并确保取消选中“验证该文件是否存在”复选框,因为要请求的文件不' t 存在于您的虚拟目录中。

    我希望这会有所帮助!

    【讨论】:

    • 谢谢马特。我已经尝试过了,但是当我尝试通过 /ViewHtml/ 显示任何页面时仍然出现 404 错误。 /ViewHtml/ 是我的项目虚拟目录中的一个虚拟目录,我从 /ViewHtml/ 添加了一个通配符应用程序映射到 aspnet_isapi.dll (asp.net) 并取消选中验证文件是否存在,然后重新启动 IIS。我错过了什么吗?
    • 听起来您一切正常。您知道 Global.asax 文件中的代码是否正在运行吗?您可以在 Global.asax 中发布代码示例吗?
    • 再次感谢马特的快速回复。如果您认为有帮助,我可以发布代码。由于 404 错误,我的印象是 IIS 仍在处理请求,而不是将其映射到 Asp.net,gobal 将在 Application_BeginRequest 函数中处理它。
    【解决方案3】:

    我认为您的问题完全与访问策略有关,您必须确保访问策略是 Read 而不是 None ,cz with None 您甚至没有权限从您的网站读取文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 2015-09-13
      相关资源
      最近更新 更多