Windows Server 2012 R2/IIS 8.5
我IIS > Sites > Default Website
有一个(ASP)应用程序,当我访问本地主机 URL 时,会下载一个文件而不是显示页面。
文件位于C:\inetpub\wwwroot\rooms
,此文件夹中有各种.dll
文件、文件夹和web.config
。内容如下web.config
;
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="false" />
<handlers accessPolicy="Read, Execute, Script">
<remove name="ISAPI-dll" />
<add name="ISAPI-dll" path="*.dll" verb="*" modules="IsapiModule" scriptProcessor="C:\inetpub\wwwroot\rooms\rooms.dll" resourceType="File" requireAccess="Execute" allowPathInfo="true" preCondition="bitness32" />
</handlers>
<defaultDocument enabled="true">
<files>
<add value="rooms.dll" />
</files>
</defaultDocument>
</system.webServer>
</configuration>
我已Default Document
在 IIS 中将相关.dll
文件设置为,这是我访问时下载的内容localhost/rooms
我已经重启过 IIS 服务器和网站本身好几次了。同一台服务器上还托管着其他网站,它们运行正常,可以通过类似的 URL 访问。我还尝试过各种浏览器。
我已经检查了 Windows 功能和角色,可以确认ASP.NET 3.5
和ASP.NET 4.5
显示为(Installed)
,与和ISAPI Extensions
一样ISAPI Filters
。
我对 IIS 或 ASP 的经验很少。
- 为什么应用程序被下载而不是被显示?
- 我该如何开始解决这个问题?
答案1
对我们来说,这是一个绑定问题。如果你打开 IIS 并右键单击网站并查看绑定属性,它将列出所有名称以及它将如何处理这些文件。
我们需要删除两个条目:
type host port binding
------------------------------------------------
net.msmq localhost*
msmq.formatname localhost*
其余需要保留的绑定是:
type host port binding
------------------------------------------------
http 80
当主机名为空时,意味着它将匹配任何内容 - 但是因为这两个条目首先捕获对本地主机的查询,所以它永远无法处理 http 类型的请求。