2016-02-06 41 views
3

我在ASP.NET 5,MVC 6和EF7中開發的IIS 8中託管應用程序。我已經創建了可通過http://localhost/api訪問的應用程序的API,並且我創建了幾個控制器來訪問數據。與EF7應用程序的ASP.NET 5 IIS 500錯誤

當我從visual studio訪問API時,一切正常,我能夠檢索到JSON數據。但是,當我宿主應用程序IIS 8和瀏覽器localhost/api/controller時,我在IIS日誌中收到500錯誤。我還在Windows Server 2012 R2服務器上安裝了http platform handler 1.2。我實際上能夠瀏覽靜態頁面和其他鏈接,如localhost/home,但是當我嘗試訪問api控制器時,我收到500個錯誤代碼。

現在,當我使用從應用程序執行的web.cmd文件自行承載應用程序並瀏覽時,我能夠檢索json數據,但不能從IIS託管的站點中檢索。

由於我不知道什麼是問題,我啓用了Failed request tracing rules,並且我能夠捕獲具有500錯誤的日誌。下面是截圖:

enter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description here

+0

你是否也有這條線在你啓動類:'app.UseIISPlatformHandler();'? –

+0

是在那裏,我可以瀏覽應用程序的主頁,而不是'api/controller'。 – Ray

回答

0

沒有從失敗的請求日誌得到這個,但既然你說這工作IIS以外我可能會建議秋後算賬:

  1. 確認應用程序池已設置爲與.NET 5.0一起使用,並且未設置爲與2.0或4.0不同的CLR。 (其實打這個,因爲非API MVC控制器也不會在所有在這種情況下工作...),該應用程序池與具有如使用NTLM足夠的數據庫權限的帳戶運行

  2. 確認安全與SQL,因爲從Visual Studio與IIS運行IIS Express時執行上下文可能會有所不同。

我也建議檢查Windows錯誤日誌,而不只是請求跟蹤....

+0

目前應用程序池被設置爲「無管理代碼」CLR版本。我也在SQL連接的startup.cs文件中編寫連接字符串的硬編碼,因爲它不使用Windows服務帳戶進行連接。我是否應該將應用程序池標識設置爲服務帳戶或本地系統?我沒有在eventlog中發現任何錯誤,這就是我在這裏打開這個問題的原因。 :( – Ray

+0

其實沒有管理代碼顯示正確的ASP.NET 5根據這個:http://www.strathweb.com/2015/12/running-asp-net-5-website-on-iis/有一件事你可以在IIS日誌中查找是500錯誤的子代碼,有時會有更多信息。上面的鏈接引用了一些可能的500錯誤... –

+1

我會嘗試爲用戶臨時設置應用程序池帳戶,以查看是否發生了更改。 ..因爲你可能有足夠的權限...對於prod我會創建一個服務帳戶 –

相關問題