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
當主機名為空時,表示它將匹配任何內容 - 然而,因為這兩個條目首先捕獲對 localhost 的查詢,所以它永遠無法處理 http 類型的請求。