My ASP.NET MVC to IIS8.5 部屬到完成所遇到的問題

 

一開始於本機IIS new 一個名為GuestBook站台詳細設定如下

你會發現該站台的application pool為GuestBook

此名稱將會關連到LoginName為IIS APPPOOL\GuestBook

 

再來確認一下專案的connection String

檢查Web.config將會使用GuestBookContextConnection

<add name="GuestBookContextConnection" connectionString="Data Source=50BW\SQLEXPRESS;

Initial Catalog=MyGuestBook.Models.GuestBookContext;

Integrated Security=True;

MultipleActiveResultSets=True;

Application Name=EntityFramework"

      providerName="System.Data.SqlClient" />

GuestBookContext.cs將會使用GuestBookContextConnection連線參數

完成後,讓我們把專案Run起來。

卻發現找不到網頁內容

檢查發現IIS指錯實體路徑,重新修正後再啟動。

卻出現CREATE DATABASE 的權限遭拒錯誤,這時候真的就卡住了,

================================================================

'/' 應用程式中發生伺服器錯誤。

於資料庫 'master' 中,CREATE DATABASE 的權限遭拒。

描述: 在執行目前 Web 要求的過程中發生未處理的例外狀況。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。 

例外狀況詳細資訊: System.Data.SqlClient.SqlException: 於資料庫 'master' 中,CREATE DATABASE 的權限遭拒。

================================================================

因為你不知道哪個東東(帳戶)沒有create db 的權限,

解決辦法下面會說明

 

先把問題簡單化,弄個只有讀取DB的專案來測試。

將一個簡單的MVC留言板專案經由IIS放進本機站台裡,但出現錯誤訊息

================================================================

'/' 應用程式中發生伺服器錯誤。

無法開啟登入所要求的資料庫 "MyGuestBook.Models.GuestBookContext"。登入失敗。

使用者 'IIS APPPOOL\GuestBook' 的登入失敗。

 

描述: 在執行目前 Web 要求的過程中發生未處理的例外狀況。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。 

 

例外狀況詳細資訊: System.Data.SqlClient.SqlException: 無法開啟登入所要求的資料庫 "MyGuestBook.Models.GuestBookContext"。登入失敗。

使用者 'IIS APPPOOL\GuestBook' 的登入失敗。

================================================================

 

解決方法:

先拜讀保哥的介紹 IIS 7.5 的應用程式集區與新增的「虛擬帳戶」特性

知其可能與「應用程式集區(Application Pool)與身份識別(Identity)的關係」後

(其實還有更決定性的文章Publish ASP.NET MVC 4 App to IIS8),

則在MSSMS裡新增一個登入角色,登入名稱就設為IIS APPPOOL\GuestBook,直接按確定新增即可。

以下為我所嘗試失敗的新增方式

另一失敗畫面

另外也可錄製SQL Server Profiler去查RUN起來的網站LoginName為何,下圖例子為IIS APPPOOL\MyLogin

 

如果MVC專案裡有需要create db時,可能會遇到以下問題

================================================================

'/' 應用程式中發生伺服器錯誤。

於資料庫 'master' 中,CREATE DATABASE 的權限遭拒。

描述: 在執行目前 Web 要求的過程中發生未處理的例外狀況。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。 

例外狀況詳細資訊: System.Data.SqlClient.SqlException: 於資料庫 'master' 中,CREATE DATABASE 的權限遭拒。

================================================================

則需要在登入屬性中的伺服器角色另外勾選dbcreator

 

設定完後,再重新RUN網站

成功!!太令人感動了。

 

參考資料:

Publish ASP.NET MVC 4 App to IIS8

介紹 IIS 7.5 的應用程式集區與新增的「虛擬帳戶」特性

'IIS APPPOOL\DefaultAppPool' 的登入失敗的問題所在及如何解決

[ASP.Net MVC] 網站部署 - 基礎

ASP.NET MVC - 使用Web Deploy佈署MVC應用程式到IIS

mvc deploy to iis

伺服器層級角色