作業系統 : Windows 7 Ultimate
IIS 7.5
因為blog有留言詢問有Local DB的網站,放在IIS上確無法執行的問題。米米想應該是權限問題吧,不過因為我用來測試的電腦上,居然沒有裝IIS (怎麼會有這種事??),所以沒有做測試,就請匿名的網友試試NTFS授權。
沒想到,回應是授權了也不work!!
這倒是一個有趣的問題,因此一早就把測試機器上的IIS 裝起來。
- 使用Visual Studio 11 Beta 建一個Web Site在IIS
- 加入LocalDB資料庫到網站
- 新增Web Form
- 將Table拉到網頁設計畫面
- 一執行,果然出現了問題
- 錯誤訊息如下,最後一行寫說”請看一下Event Log吧…”
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 50 - Local Database Runtime error occurred. Cannot create an automatic instance. See the Windows Application event log for error details.
)
- 打開Event Viewer看一看,有兩個明確的錯誤訊息。一個說Profile沒有load
- 一個是拒絕存取
- 針對第一個問題,Profile沒有load。開啟C:\Windows\System32\inetsrv\config目錄下的applicationHost.config檔案,找一下ProcessModel的設定,將以下兩項都設為true。
- 針對第2個問題,權限的地方。檢查一下IIS目前的設定,TestWebSite網站建立在DefaultAppPool下。因為DefaultAppPool在IIS 7.5 使用的是ApplicationPoolIdentity來執行程式
- 利用檔案總管,找到資料庫的Database1_log.ldf檔,授權ApplicationPoolIdentity帳號有Full Control 權限
- 選不到帳號,要自己輸入字串:
- 設Full Control
- 按相同步驟,利用檔案總管,找到資料庫的Database1_log.mdf檔,授權ApplicationPoolIdentity帳號有Full Control 權限
- 測試前,先IISRESET,讓組態確定套用。
- 再執行網頁,問題就解決了。