SQL Server Express 使用者 Instancing 及 ASP.net 應用程式專案的問題

文章翻譯 文章翻譯
文章編號: 2002980 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

徵狀

使用者執行個體將無法使用預設的 IIS 7.5 安全性設定 Windows Server 2008 R2 和 Windows 7 用戶端上執行 SQL Server Express 依賴 IIS 7.5 且上執行的 Web 應用程式。 開發人員將會遇到開發 Web 應用程式使用 Visual Studio 2005 + SQL Server 快速 2005年,Visual Studio 2008 + SQL Server 快速 2008,或 Visual Studio 2010 + SQL Server 快速 2008 Windows 7 用戶端和 Windows Server 2008 R2 的問題。

開發人員將會嘗試開發 Web 應用程式專案 (WAP) 或網站裝載在 IIS6/IIS7/IIS7.5 依賴於 SQL Server Express 使用者執行個體 WAP 專案結構或網站的資料夾結構,使用者的文件資料夾中有類似的問題。 這個問題存在於所有不管基礎的作業系統版本的 Visual Studio 的版本。 Web 應用程式,嘗試建立資料庫或讀取/寫入至資料庫,使用 SQL Server Express 使用者執行個體模式可以會遇到任何下列的錯誤:

嘗試附加檔案 c:\Users\[YourUserAccountName]\Documents\Visual Studio 20XX\Projects\[YourSolutionName]\[YourProjectnName]\App_Data\aspnetdb.mdf 的自動命名資料庫失敗。 具有相同名稱的資料庫存在,或無法開啟指定的檔案,它位於 UNC 共用。


--或--


無法產生使用者執行個體的 SQL Server 限於失敗中擷取使用者的本機應用程式資料路徑。 請確定使用者具有電腦的本機使用者設定檔。 將會關閉連線。


 

注意 : 如果下列其中之一為真,SQL Server Express 的使用者執行個體模式依賴的 Web 應用程式:

  • 應用程式依賴 machine.config 中定義預設 「 LocalSQLServer"的連接字串
  • 應用程式使用連接字串,包含下列屬性:

    "AttachDBFilename=|DataDirectory|xxxxxx.mdf;User 執行個體 = true"

 

 

發生的原因

Windows Server 2008 R2 和 Windows 7

IIS 7.5 預設安全性組態設定以 「 應用程式集區識別 」 的身份執行的應用程式集區。 執行應用程式集區使用這個特殊的識別第一次引進 Vista SP2 和 Windows Server 2008 SP2 中的選擇性設定。 在 Windows 7 用戶端和 Windows Server 2008 R2 這個特殊的識別是現在預設值。
 
與 Visual Studio 2005、 Visual 的 Studio 2008 或 Visual Studio 2010 所建置的 Web 應用程式依賴的是 SQL Server 快速 2005年執行個體的使用者,或 SQL Server 快速 2008年不執行使用新的應用程式集區識別。 這些產品的開發,並測試對以較舊的網路服務帳戶執行的應用程式集區。

 

Web 應用程式專案,在 IIS 中裝載式的使用者的文件資料夾中的網站

Web 應用程式專案 (WAP) 存在於使用者的 「 Documents\Visual Studio 20XX\Projects 」 資料夾下的資料夾結構。 網站專案存在於使用者的 「 Documents\Visual Studio 20XX\Websites 」 資料夾下的資料夾結構。 SQL Server Express 使用者執行個體需要用到網站] 或 [WAP 專案的目錄結構的父資料夾的檔案存取權限。 因為 IIS 服務帳戶 (網路服務) 依預設值沒有這些權限,在 Visual Studio 專案資料夾結構、 WAP 專案和網站位於使用者的文件] 資料夾內,在 IIS 中裝載,無法再開啟 SQL Server Express 的讀取權限的使用者執行個體資料庫。
 
WAPs 原先建立使用者的文件] 資料夾內,但之後已變更為使用 IIS Web 伺服器透過專案的屬性的 [網頁] 索引標籤將會遇到這個檔案的權限問題。 在網站目錄結構的位置使用者的文件] 資料夾內的 IIS 中裝載的網站也會發生檔案的權限問題。 之所以發生這個問題 WAP 專案,與任何 IIS 版本執行為網路服務 (IIS6、 IIS7 和 IIS 7.5) 在使用者的文件] 資料夾中的專案結構所在的主控的網站。

 

解決方案

解析度 Windows 7 和 Windows Server 2008 R2

執行 IIS 7.5,不論他們的專案類型的所有 Web 應用程式都執行下列步驟:

  1. 執行 「 網際網路資訊服務 (IIS) 管理員] 工具。 這個工具可以存取,可能是從 [系統管理開始] 功能表或在滑鼠輸入"inetmgr"--> 搜尋文字方塊的 [Windows] 開始,並選取 inetmgr 工具。
  2. 在 「 IIS 管理員 」 工具的左邊窗格中展開 [電腦節點。
  3. 在 「 應用程式集區 」 節點上按一下,使在主視窗的管理工具中顯示的應用程式集區。
  4. 如果您正在進行疑難排解 ASP.NET 2.0/3.0/3.5 應用程式就會選取"DefaultAppPool 」 應用程式集區。 ASP.NET v4 選取 「 ASP.NET V4.0 」 應用程式集區。
  5. 以滑鼠右鍵按一下選取的應用程式集區並選擇 [進階設定
  6. 在 [進階設定] 對話方塊尋找類別稱為 「 程序模型 」。 第一列中的類別目錄將會是 「 識別 」 資料列。
  7. 按一下 「 識別 」 資料列,然後再按一下 [小] 按鈕,顯示值的儲存格的右側。 [] 按鈕顯示的文字"...
  8. 應用程式集區識別碼] 對話方塊將會快顯功能表。 在該對話方塊有兩個選項按鈕。 請確定第一個選項按鈕已選取其標題為 「 內建帳戶 」。
  9. 在下拉式清單方塊中選項按鈕的下方] 選擇 [「 網路服務 」 來識別。
  10. 按一下確定以關閉 [出應用程式集區識別碼] 對話方塊。
  11. 按一下 [確定要關閉 [進階設定] 對話方塊。
  12. 此時應用程式集區身分識別所做的變更將已儲存至 IIS 7.5 組態存放區。

 

Web 應用程式專案,網站的解析度

Web 應用程式專案 (WAP) 和網站位於裝載在任何版本的 IIS 執行網路服務的使用者的文件資料夾,執行下列步驟:

  1. 第一次確認 IIS 已設定為執行網路服務。 這是 IIS6 和 IIS7 上的預設值。 但是如果您執行 Windows 7 或視窗 Server 2008 R2 上您會先需要遵循上述步驟中 「 解決方案的 Windows 7 和 Windows 伺服器 2008 R2 」,讓 IIS 應用程式集區執行為網路服務。
  2. 在命令提示字元下鍵入 net stop iisadmin /y。 這會造成任何正在執行的 ASP.NET WAP 應用程式關閉。
  3. 結束所有正在執行的 Visual Studio 執行個體。
  4. 網路服務必須授與讀取權限最上層的 Visual Studio 資料夾位於您使用者的文件] 資料夾。 Visual Studio 資料夾會有不同的名稱版本而定: 「 Visual Studio 2005"、"Visual Studio 2008"或 「 Visual Studio 2010 」。
  5. 讀取和寫入至您專案的最上層專案資料夾權限的兩個必須授與網路服務。 範例如果 WAP 專案稱為 「 MyCustomWebProject,",然後資料夾"Documents\Visual Studio 20xx\Projects\MyCustomWebProject 」 需要有讀取和寫入權限啟用網路服務。 或者,webiste 專案稱為 「 MyCustomWebProject 」,然後資料夾"Documents\Visual Studio 20xx\Websites\MyCustomWebProject 」 需要有讀取,並啟用的網路服務的寫入存取。
  6. 必須授與網路服務,同時讀取並將權限寫入 App_Data 資料夾位於您的 Web 專案的目錄結構中。

 

其他相關資訊

Microsoft 建議的因應措施本文所述只能使用,以解除封鎖受影響的開發案例。 在部署至實際執行環境在任何版本的 IIS 上的應用程式時不應使用 SQL Server Express 使用者執行個體。
 
在 IIS 7.5 生產 Web 伺服器上的應用程式集區的設定應該使用 [新的應用程式集區身分識別] 或 [自訂建立的使用者帳戶。 IIS 7.5 生產 Web 伺服器上的應用程式集區不應該以網路服務的方式執行。
 
因應措施所述使用 WAP 專案的方法,為暫時解決方法只應該用於位於使用者的文件] 資料夾中的網站。 從安全性的觀點來看它是不所需要的網路服務能夠讀取所有在 Visual Studio 專案資料夾中的子資料夾。 建議是移動 IIS 裝載的 WAP 專案和不同的檔案位置的 IIS 通常可存取的網站服務帳戶 (例如 c:\inetpub\wwwroot)。

 

注意 :本文屬於「快速發佈」文章,係由 Microsoft 技術支援或組織內部直接建立。 本文所包含的資訊是為了回應新問題而依現況提供。 因此為了迅速對外發佈,文章內容可能含有印刷錯誤,而且可能會在不另行通知的情況下進行修改。 如需其他考量事項,請參閱使用規定

屬性

文章編號: 2002980 - 上次校閱: 2010年3月9日 - 版次: 3.0
這篇文章中的資訊適用於:
  • Microsoft Internet Information Services 7.0
  • Microsoft Visual Studio 2005 Professional Edition
  • Microsoft Internet Information Services 6.0
  • Microsoft Visual Studio 2008 Professional Edition
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2005 Express Edition
關鍵字:?
kbrapidpub kbnomt KB2002980
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com