如何将处理程序映射设置为IIS 6.0中的目录?

时间:2009-06-25 17:33:12

标签: asp.net iis-6

我的开发机器上有IIS 7.0,服务器上有IIS 6.0。在我的开发机器上,我能够在我的站点中名为/ ViewHtml /的目录上设置处理程序映射,并将其映射到asp.net。在我的global.asax中,我检查发送到asp.net for / ViewHtml /的请求,并且我提供位于此apps虚拟目录之外的相应html文件(Doc,Power Point或Excel文件的html版本)。我这样做是因为所有文件都受权限保护,我们不希望因为可伸缩性而将这些文件放在数据库中,我需要在服务器上隐藏这些文件的路径。这一切都在IIS 7.0中完全符合我的要求。虽然我无法将我的IIS 6.0服务器配置为将该目录的所有请求映射到asp.net。

有什么想法吗?谢谢伙计们?

3 个答案:

答案 0 :(得分:1)

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

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

我希望这有帮助!

答案 1 :(得分:1)

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

创建一个实现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中配置的应用程序映射。

答案 2 :(得分:0)

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