[英]Cannot run Simple ASP.NET MVC Application with Visual Studio 2015 from IIS (Internal Server 500)
我想從IIS而不是IIS Express運行,因為我有一個指向我的機器的外部IP,我將從外部源接收消息。 最終我將使用WebAPI但是為了測試和設置IIS,我使用的是一個簡單的ASP.NET MVC 5 Web應用程序。
我創建了一個新的ASP.NET MVC 5 Web應用程序,這是Visual Studio 2015 MVC模板的框架,然后我使用IIS Express運行應用程序,沒有問題:
然后我去了IIS 10並創建了一個以“localhost”作為綁定的新網站:
IIS中這個新網站的物理路徑是C:\\inetpub\\wwwroot\\AspNetMvcTest
:
然后我轉到Web應用程序屬性並切換到IIS。 有人問我是否要創建一個新的虛擬目錄:
我單擊是 ,如果單擊否 ,操作將被取消,並且您未保存Web應用程序屬性。 您必須單擊是以更改為Visual Studio中的本地IIS屬性。
然后我被告知IIS“localhost”被映射到一個不同的文件夾,我想重新映射:
我點擊了是 。 如果單擊“ 否” ,則將再次保留未保存的Web應用程序屬性,並且不會在Visual Studio中使用本地IIS。
這是有趣的Visual Studio正在嘗試更改“虛擬目錄”,因為它將實際更改IIS網站的物理路徑而不是添加虛擬目錄。 虛擬目錄是一個文件夾,位於IIS網站的物理路徑之外,IIS將視為物理路徑文件夾的一部分。 但我離題了。
現在我被告知“虛擬目錄”已成功創建:
現在我們來看看Visual Studio 2015對IIS 10所做的更改:
我們在綁定到localhost的網站上沒有虛擬目錄:
我的物理路徑已被Visual Studio 2015更改,並映射到我的簡單ASP.NET MVC 5 Web應用程序所在的目錄:
因此,即使Visual Studio 2015在更改ASP.NET MVC 5 Web應用程序屬性時使用“虛擬目錄”,Visual Studio 2015也只關注物理路徑,這是我在IIS中可以看到的唯一改變。
現在為內部服務器錯誤500詳細信息
我在Visual Studio 2015中按F5,F12工具說有一個內部服務器500錯誤:
如果我們在Fiddler中檢查請求和響應,則500錯誤的內容長度= 0
為了嘗試獲取500錯誤的更多細節,我在Web.Config中關閉了自定義錯誤,並添加了httpErrors Detailed和PassThrough:
我向Global.asax添加了“catch all”異常處理,沒有斷點命中 :
這是我的調用堆棧,它是空的,屏幕截圖中的斷點都沒有被擊中:
我在我的解決方案中添加了一個控制台應用程序作為“設置為啟動項目”,這是我的調用堆棧,證明可以點擊一個斷點:
這是事件查看器 - >應用程序的屏幕截圖,我清除了應用程序日志,在Visual Studio 2015中按下了F5,刷新了應用程序日志,它仍然是空的:
在Visual Studio更改物理路徑后,我認為問題是文件夾權限
所以我添加了IIS_IUSRS
並給出了完全控制,即使帳戶不需要物理路徑目錄的高級別權限:
我的ApplicationPoolIndentity是Framework v4.0和ApplicationPoolIdentity ApplicationPoolIdentity被分配了Users組和IIS_IUSRS組的成員身份:
我嘗試將特定的應用程序池添加到ASP.NET MVC應用程序物理目錄的安全屬性中,所以首先我發現Visual Studio F5附加到的進程:
我將“DefaultAppPool”和我的IIS應用程序池“IIS APPPOOL \\ AspNetMvcTest”添加到物理文件夾安全性。
我將index.html添加到Web應用程序物理文件夾中,但這不起作用:
<html>
<head>
</head>
<body>
<h4 style="color: black">hello world</h4>
</body>
</html>
我已經將IIS網站物理路徑移動到inetpub / wwwroot回到我創建網站時創建的目錄,我甚至無法瀏覽到一個簡單的HTML文件,我得到相同的空500錯誤
所以現在我被卡住了,不知道還能做什么。
TL; DR
在閱讀剩下的答案之前, 您可能只需要運行aspnet_regiis ,您可以從cmd或通過Web平台安裝程序中的酷工具執行此操作,如果您搜索“ASP.NET”,則會有一個方便的“執行ASP.NET IIS注冊”工具“你可以安裝。
原答案:
感謝大家的所有幫助,我應該做的第一件事是退后一步,從IIS網站測試一個index.html“Hello World”測試文件,其中c:\\ inetpub \\ wwwroot作為IIS網站的物理路徑。
當您第一次安裝IIS時,您有一個默認網站,瀏覽到它並確保它有效。 是一台新機器的良好開端。 但我剛安裝IIS后刪除了IIS站點
我采取的修復步驟:
我認為主要的問題是ASP.NET MVC 5 Web至少需要.NET Framework 4.5。 根據您提供的信息,Web應用程序的應用程序池使用的是.NET 4.0。 看起來你還沒有在你的IIS中注冊ASP.NET 4.5。
要使用IIS注冊ASP.NET 4.5,可以使用Visual Studio的命令提示符(作為管理員),轉到以下目錄並運行命令aspnet_regiis.exe -i
C:\Windows\Microsoft.NET\Framework64\v4.5.<version>
使用IIS成功注冊ASP.NET 4.5后,將Web應用程序更改為使用.NET 4.5應用程序池。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.