簡體   English   中英

無法從IIS(內部服務器500)使用Visual Studio 2015運行簡單ASP.NET MVC應用程序

[英]Cannot run Simple ASP.NET MVC Application with Visual Studio 2015 from IIS (Internal Server 500)

  • Windows 10專業版
  • IIS 10
  • Visual Studio 2015(以管理員身份運行)

我想從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站點

我采取的修復步驟:

  1. 我通過控制面板 - >程序和功能 - > Windows功能卸載了IIS。
  2. 重新啟動了我的電腦
  3. 在本文檔之后安裝了適用於Windows 10的IIS
  4. 通過創建一個網站,使用DefaultAppPool然后瀏覽localhost來測試IIS,這是有效的(再次當你第一次安裝IIS時,你有這個網站,但我幾天前在我的網站上刪除了它)
  5. 我發現我的簡單ASP.NET網站仍然沒有工作,它發布到c:\\ inetpub \\ wwwroot \\ AspNetMvcTest所以它不是一個潛在的文件夾權限問題。 瀏覽時,而不是加載我的ASP.NET網站IIS重定向到根目錄c:\\ inetpub \\ wwwroot並顯示其IIS歡迎頁面(“iisstart.htm”)
  6. 這意味着我需要通過Web平台安裝程序中的酷工具運行aspnet_regiis,如果你搜索“ASP.NET”,你可以安裝一個方便的“執行ASP.NET IIS注冊工具”。
  7. 就是這樣,我已經完成了設置,ASP.NET MVC網站在刷新我的瀏覽器(位置欄中的localhost)后立即開始從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM