IIS 8.5提供dll供下载而不是执行

IIS 8.5提供dll供下载而不是执行,iis,dll,cgi,iis-8.5,isapi,Iis,Dll,Cgi,Iis 8.5,Isapi,问题: 当我通过类似的URL访问(32位)DLL时,IIS总是认为我想下载文件(文件大小为0字节),而不是执行DLL 到目前为止我所尝试的: 在ISAPI和CGI限制中添加了此特定DLL的条目 启用了*.dll的“ISAPI dll”处理程序,具有读取、编写脚本和执行的功能权限 IIS用户/AppPool标识对dll的physcal位置具有完全访问权限 应用程序池正在经典模式下运行,并且已启用32位应用程序 我删除了*.dll的MIME类型条目 任何浏览器都会提示一个下载窗口。我现在没有主意

问题:

当我通过类似的URL访问(32位)
DLL
时,IIS总是认为我想下载文件(文件大小为0字节),而不是执行DLL

到目前为止我所尝试的:

  • 在ISAPI和CGI限制中添加了此特定DLL的条目
  • 启用了*.dll的“ISAPI dll”处理程序,具有读取、编写脚本和执行的功能权限
  • IIS用户/AppPool标识对dll的physcal位置具有完全访问权限
  • 应用程序池正在经典模式下运行,并且已启用32位应用程序
  • 我删除了*.dll的MIME类型条目
任何浏览器都会提示一个下载窗口。我现在没有主意了。我目前正在Windows Server 2012 R2上使用IIS 8.5

在Windows 2000 SP4上的IIS 5中,相同的应用程序运行正常


任何帮助或想法都将不胜感激

由于Windows 2000是32位的,Windows Server 2012 R2是64位的(正如您所说,您的DLL是32位的),我想您的问题可能与


是否已使用命令
regsvr32
(从windows目录运行该命令)在服务器端注册了DLL

  • 您也可以尝试如下设置MIME类型条目:
扩展名
类型

.dll
汇编
(删除星号并保留扩展名上的点)

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

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


最后,根据,您可以参考并仔细检查处理程序是否正确设置。

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


简言之,在配置完所有内容后,请尝试私有模式或其他web浏览器。

在我的情况下,我完成了所有必要的操作,但最后不得不删除IIS功能,重新安装,然后应用更改。不确定IIS是如何损坏的。