繁体   English   中英

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

[英]How do you set handler mapping to a directory in IIS 6.0?

我的开发机上有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的ISAPI扩展名的任何文件扩展名。

这样做,打开您的虚拟目录的属性。 在“ 虚拟目录”选项卡(如果是网站,则为“主目录”选项卡)上,单击“ 配置...”按钮。 在出现的对话框中,单击底部列表框旁边的“ 插入...”按钮。 在此对话框中,选择“%SYSTEMROOT%\\ Microsoft.NET \\ Framework \\ v2.0.50727 \\ aspnet_isapi.dll”作为可执行文件,并确保取消选中“验证该文件是否存在”复选框,因为要请求的文件没有不在您的虚拟目录中。

我希望这有帮助!

我使用与您使用的配置相同的配置设置了一个Web应用程序,并且也得到了404。我不知道为什么它在IIS 7中可以正常工作,但是这是我必须修复的工作。

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

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

Web.config示例:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM