2012-01-27 36 views
3

我的ASP.NET項目在App_Data文件夾中有一個MDF數據庫。「嘗試爲文件* FileName *附加自動命名的數據庫失敗。」從ASP.NET Dev Server移動到IIS後出現錯誤

連接字符串:

數據 源= \ SQLEXPRESS; AttachDbFilename = | DataDirectory目錄| \ MainDatabase.mdf;集成 安全=真;用戶實例=真

它。一直工作得很好,直到我更改項目參數以使用「本地IIS Web服務器」而不是「Visual Studio Development Server」。

該項目現在產生以下SqlException

試圖附加自動命名的數據庫文件 C:\用戶\管理\文檔\ Visual Studio的 2010 \項目\ SL \ SL \ App_Data \ MainDatabase.mdf 失敗。存在相同名稱的數據庫,或指定的文件不能打開,或位於UNC共享上。

如何修改連接字符串以使其與IIS一起使用?

回答

1

您可能會發現這是文件權限(錯誤狀態爲:「或指定的文件無法打開」)。默認情況下,IIS作爲受限用戶運行,並且不太可能訪問管理員主目錄。

你三個選項:

  1. 更改IIS應用程序池的身份作爲用戶是 確實有訪問該文件夾
  2. 移動MDF文件的位置是 IIS運行可以訪問(然後檢查文件的權限)
  3. 更改文件(以及可能位於其上的目錄)的權限,以便IIS可以訪問該文件。

其中,數字2是最理想的。另外兩個可以降低安全性 - 第一個方法是讓IIS可以在許多文件系統(以及潛在的系統資源)上自由統治;而第三個有可能打開用戶的主目錄到IIS。

+0

只是試圖讓所有人完全控制通過數據庫文件所在的目錄。由於某種原因仍然失敗。 – SharpAffair 2012-01-27 18:20:47

+1

您可以通過嘗試使用Chris提供的選項1來驗證問題是否仍然具有權限。正如他所說,這是非常不安全的,除了測試之外不應該用於其他任何事情。如果您將應用程序池用戶更改爲您的帳戶,並且該網站正常工作,則您知道您仍然有權限問題。 – 2012-01-27 18:44:38

0

確保您的IIS進程的用戶帳戶正在運行,因爲對該文件具有正確的權限。

1

由於您使用的是集成安全性,用戶連接必須映射到SQL Server登錄名。當您更改爲IIS時,您切換了用戶,並且它可能無法映射到數據庫中的登錄名。您可以通過指定在您的數據庫中有效的用戶名和密碼來測試。

例如:

數據源= \ SQLEXPRESS; AttachDbFilename = | DataDirectory目錄| \ MainDatabase.mdf;用戶ID =管理員;密碼=密碼;用戶實例=真

相關問題