【问题标题】:IIS 8.5 serving dll for download instead of executingIIS 8.5 为 dll 提供下载而不是执行
【发布时间】:2018-03-14 15:02:15
【问题描述】:

问题:

当我通过 http://localhost/somepath/some.dll?action 之类的 URL 访问(32 位)DLL 时,IIS 总是认为我想下载文件(文件大小为 0 字节) 而不是执行 dll。

到目前为止我尝试了什么:

  • 在 ISAPI 和 CGI​​ 限制中为该特定 DLL 添加了一个条目
  • 为 *.dll 启用了“ISAPI-dll”处理程序,具有读取、脚本和执行功能权限。
  • IIS 用户/AppPool 身份对 dll 的物理位置具有完全访问权限
  • App-Pool 以经典模式运行,并启用 32 位应用程序
  • 我删除了 *.dll 的 MIME 类型条目

仍然有任何浏览器提示下载窗口。我现在没有想法了。我目前在 Windows Server 2012 R2 上使用 IIS 8.5。

相同的应用程序在 Windows 2000 SP4 上的 IIS 5 中运行没有问题。

感谢任何帮助或想法!

【问题讨论】:

    标签: iis dll cgi iis-8.5 isapi


    【解决方案1】:

    由于 Windows 2000 是 32-bit 而 Windows Server 2012 R2 是 64-bit(正如你所说,你的 DLL 是 32-bit)我希望你的问题可能与 this issue. 相关联


    您的 DLL 是否已使用命令 regsvr32 <youdll> 在服务器端注册(从 windows 目录运行该命令)?

    • 您也可以尝试像这样设置 MIME 类型条目:

    Extension > Type

    .dll > Assembly(去掉星号,保留扩展名上的点)

    • 您可以尝试在 32 位模式下运行 IIS 主机进程

    • 您可以尝试为您的 dll 创建一个包装器,并将此包装器 dll 托管在 COM+ 中

    最后,根据this similar issue,您可以参考this并仔细检查Handler是否正确设置。

    【讨论】:

    • 在我的例子中,我做了所有必要的事情,但我最终不得不删除 IIS 功能,重新安装它,然后应用更改。不确定 IIS 是如何损坏的。
    【解决方案2】:

    我知道这是一个老问题,但我发现网络浏览器实际上正在缓存文件下载。我通过完全停止 IIS 并访问 URL 证明了这一点,但它仍然提示我下载文件。然后我重新启动 IIS,确认同样的问题仍然存在,从新的私人窗口尝试,DLL 运行而不是提示我下载。

    简而言之,在您配置完所有内容后尝试私人模式或其他网络浏览器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-28
      • 1970-01-01
      • 2014-10-24
      • 2020-05-29
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多