2014-01-27 16 views
0

我在配置IIS 6.0时遇到问题。 我有用于下载目的的服务器,但对于所有的文件,我想通过一个模块添加自定义标题:在IIS 6.0中为.exe文件添加模块

private void Application_EndRequest(Object source, EventArgs e) 
{ 
    HttpApplication application = (HttpApplication)source; 
    String filePath = application.Request.Path; 
    String fileName = VirtualPathUtility.GetFileName(filePath); 
    application.Response.AddHeader("Content-Disposition", String.Concat("attachment; filename=\"", fileName, "\"")); 
} 

我的问题是,当我尝试这样做,为.exe文件没有关系没有工作。 我试图在扩展名映射下添加.exe - > c:\ windows \ microsoft.net \ framework \ v2.0.50727 \ aspnet_isapi.dll,但只强制执行服务器上的.exe文件。

我也尝试过不同的执行权限,但设置脚本和可执行文件之外的任何其他内容会恢复:HTTP错误403.1 - 禁止:执行访问被拒绝。

任何想法如何强制该模块使用.exe文件?

+0

它的工作原理与IIS8没有任何problem..IIS 6似乎是有问题的。 –

回答

1

它是否允许您在没有模块的情况下下载.exe文件?

  1. 在IIS管理器主目录选项卡上的网站属性中,确保将执行权限设置为“仅脚本”。
  2. 在IIS管理器,HTTP Headers选项卡中的网站属性上,请务必将.exe定义为有效的MIME类型。
  3. 一定要停止并重新启动IIS服务(通过服务)

参考http://blogs.msdn.com/b/david.wang/archive/2005/07/11/allow-file-downloads-on-iis-6.aspx

+0

它允许下载.exe文件时映射到.exe到c:\ windows \ microsoft.net \ framework \ v2.0.50727 \ aspnet_isapi.dll被删除。 但是,当该映射被删除时,它不会被.net处理,因此模块不能用于.exe。 我需要一些设置,允许我通过aspnet_isapi.dll处理.exe文件,但不试图在服务器上运行..只将它作为文件提供。 –

+1

在这种情况下,您可能必须使用本机[isapi过滤器](http://msdn.microsoft.com/zh-cn/library/ms525196%28v=vs.90%29.aspx)将您的标题追加到托管http模块仅适用于IIS6中的托管请求。受管理的http模块开始适用于[IIS7集成模式]中的所有请求(http://stackoverflow.com/questions/716049/what-is-the-difference-between-classic-and-integrated-pipeline-mode-in- IIS7)。 –

+0

我确定自定义的ISAPI是一个解决方案,但我有一些希望通过托管模块运行它:) –