2016-02-26 70 views
18

發佈ASP.NET Web App後,我試圖在本地服務器上託管網站。但是,當我啓動它時,它會在我的瀏覽器中出現此錯誤:ASP.NET 5啓動應用程序時出錯

糟糕。 500內部服務器錯誤啓動 應用程序時發生錯誤。

我該如何調試這個錯誤是什麼?該網站在開始使用IISExpress和Visual Studio中的「web」時工作(調試和發佈配置)。

我使用的是開發環境,我已經指定了app.UseDeveloperExceptionPage();

我按照指示here部署到IIS。

我也嘗試過提供的建議here(選擇「在發佈之前刪除所有現有文件」重新發布)。 (該OP有一個稍微不同的錯誤,所以這就是爲什麼我發佈一個新的問題。)

我在網上找了好幾個小時,但似乎沒有太多的內容。有任何想法嗎?

我在Windows 7上使用ASP.NET 5 RC1。

+2

啓用httpPlatform標準輸出記錄web.cnfig以查看日誌文件中的實際錯誤。我有錯誤,因爲我的數據庫權限設置不正確,我使用的是集成安全性:-) –

+1

@MuqeetKhan Lmao我這樣做了,顯然這個例外與無法找到配置文件有關。 OOPS。該網站使用基於主機環境的配置文件。我不知道「發佈」工具將主機環境更改爲生產。我只是假定它還在開發中...... – painiyff

+1

很高興幫助。當你有機會時你能接受答案嗎?謝謝 ! –

回答

34

您應該在web.config文件中設置stdoutLogEnabled=true以查看發生的實際錯誤。你可以用stdoutLogFile參數指示寫入這些文件的位置;下面的截圖示例寫入stdoutLogFile=".\logs\stdout"。 (你應該確保該目錄存在;應用程序不會創建它)

至於無法找到正確的配置文件是默認環境是生產。它在項目屬性中的visual studio中明確地設置了開發。

更新:在AspNetCore RTM模塊在web.config中system.webServer節點下稱爲aspnetCore。另外,正如@ErikE在評論中指出的那樣,web.config現在位於項目的根目錄下,而不像以前的版本中那樣位於wwwroot下。

enter image description here

+1

你能告訴我在Web.config這個選項設置在哪裏嗎?在wwwroot文件夾中的 –

+3

web.config將包含httpPlatform部分。本節將具有stdoutLogEnabled屬性。它的默認值是false,將其更改爲true。這樣做後重新啓動網絡池,它會引發錯誤,確保在任務管理器中終止w3wp.exe和dnx.exe的所有實例。 –

+0

'web.config'現在發佈到'wwwroot'的父文件夾中,所以請在正確的位置找到它! – ErikE

8

這個錯誤也當你試圖從啓動一個數據庫連接(例如,用於播種)的現象,而且在部署服務器上,由於在數據庫服務器insufficent previleges失敗。

+1

任何最佳實踐解決這個問題? – MGDavies

+0

您是如何發現,試錯的,或者您是否在某處看到錯誤消息? –

2

在幾種情況下會發生此錯誤。在我的情況下,我沒有正確設置數據庫連接字符串。我將它在Visual Studio 2017中修復如下:

1)右鍵單擊項目,選擇發佈,打開主區域中的發佈頁面。

2)選擇左側

3)在總結部分的發佈選項卡中,有一個「設置...」鏈接。點擊它。這將打開「發佈」對話框。

4)單擊左側的設置選項卡。

5)展開文件發佈選項,檢查

6)展開數據庫「在目的地刪除其他文件」,勾選「在運行時使用此連接字符串」(這是預先填充了基於我的Azure的SQL連接字符串如何我原先設置我的發佈選項)

7)擴大實體框架遷移,勾選「上發佈應用此遷移」(同樣,連接字符串被預先填入)

8)單擊保存

9)發佈

10)交叉手指

+0

這對我有用。謝謝! –

0

問題:最有可能這個錯誤是由於權限不足的Application Pool Identities。要了解:

轉到Windows 任務管理器細節選項卡/過程(根據Windows OS)w3wp.exeUser name的外觀爲您的應用(<App_Pool_Name>通常DefaultAppPool)作爲IIS Worker Process在那裏運行。如果您的應用沒有在那裏列出,那麼應用對您的數據庫沒有足夠的權限。

解決它:執行下列操作,並給予完全訪問你的應用程序:您SQL Server Management Studio中和登錄

去,因爲管理員開放安全>登錄>右鍵點擊登錄並添加一個New Login

一般:

  • Login Name:輸入IIS APPPOOL\<App_Pool_Name>通常DefaultAppPool

  • Default Database:指向<Your_App_Database>

用戶映射

  • 包裝盒上的Users mapped to this login:

    - 檢查框映射到<Your_App_Database>

    - 下層用戶輸入IIS APPPOOL\<App_Pool_Name>通常DefaultAppPool

    - 下層默認架構輸入dbo

  • 在框Database role membership for:<Your_App_Database>

    - 檢查以下框:db_datareaderdb_datawriter,並public

點擊OK

現在試圖訪問你的應用程序,它應該工作!