【问题标题】:Adding module for .exe file in IIS 6.0在 IIS 6.0 中为 .exe 文件添加模块
【发布时间】:2014-01-27 12:11:43
【问题描述】:

我对 IIS 6.0 的配置有疑问。 我有一个用于下载的服务器,但是对于所有文件,我想通过模块添加自定义标头:

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 文件吗?

【问题讨论】:

  • 它与 IIS8 一起工作没有任何问题..IIS 6 似乎有问题。

标签: c# iis iis-6 exe httpmodule


【解决方案1】:

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

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

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

【讨论】:

  • 删除 .exe 到 c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll 的映射时允许下载 .exe 文件。但是,当删除该映射时,.net 不会处理它,因此模块不适用于 .exe。我需要一些设置,允许我通过 aspnet_isapi.dll 处理 .exe 文件,但不尝试在服务器上运行它。仅将其作为文件提供。
  • 在这种情况下,您可能必须使用本机 isapi filter 来附加标头,因为托管 http 模块仅适用于 IIS6 中的托管请求。托管 http 模块开始适用于 IIS7 integrated mode 中的所有请求。
  • 我确信自定义 ISAPI 是一种解决方案,但我希望通过托管模块运行它 :)
猜你喜欢
  • 2010-10-29
  • 1970-01-01
  • 1970-01-01
  • 2013-01-15
  • 1970-01-01
  • 2016-12-10
  • 2012-02-20
  • 2020-12-14
  • 2018-09-22
相关资源
最近更新 更多