2013-12-21 22 views
3

我有一個看起來像這樣的連接字符串:應用程序不能打開SQL連接時,在IIS

Server=.;Database=mydbname;Trusted_Connection=True; 

當我運行/調試使用Visual Studio(IIS快遞)我的應用程序,但也能正常工作部署,IIS-8後它在打開連接時拋出異常:

登錄用戶'IIS APPPOOL \ mysite'失敗。

我很困惑,爲什麼發生這種情況的原因是IIS把它的用戶在中間時犯規需要一個和數據庫這是爲什麼不與IIS Express發生呢?

+0

IIS express與您的用戶協同工作IIS可以在應用程序池用戶身上工作添加到sql express pe爲IIS APPPOOL \ mysite訪問數據庫的權限。 – VikciaR

+0

這裏你去:http://www.technologycrowds.com/2013/03/login-failed-for-user-iis.html#.UrYGXfRDvkN – Ani

+0

我正在使用'SQL server 2012 Enterprise',可以請你解釋一下我如何將此權限添加到SQL?我是否需要每次更改此應用程序池時進行一些更改? – Maven

回答

7

您正在使用Trusted_Connection=True,因此將用戶ApplicationPoolIdentity或IIS APPPOOL\mysite提供給SQL服務器。

選項1.在SQL服務器中授予IIS APPPOOL\mysite的權限。

選項2使用User Id=User_Id;Password=******而不是Trusted_Connection=True

+0

但我的SQL Server被設置爲Windows身份驗證模式,並沒有用戶/通行證..我應該創建一個? – Maven

+1

創建了用戶/密碼,現在工作正常。謝謝。 – Maven

1

連接字符串將覆蓋與IIS身份的用戶配置文件的SQL認證值有Trusted_Connection=true

設置Trusted_Connection=false

5

出現這種情況的,因爲你已要求使用受信任的連接,這意味着該代碼被作爲執行的操作系統的用戶將是一個連接到數據庫進行連接。

對於IIS,除非您已指定在web.config中使用模擬,否則操作系統用戶通常在IIS應用程序池中定義。

默認情況下(爲了防止安全問題),用於IIS應用程序池的默認標識具有非常有限的功能。根據您的配置(SQL服務器與IIS(相同的機器,不同的機器)相關),您可能需要爲應用程序池指定不同的身份,或者您可能需要授予訪問SQL Server權限池標識。

Microsoft article對如何配置ASP.Net模擬的附加信息。

我們總是配置我們的Web應用程序來模擬域用戶,這樣我們就可以訪問遠程計算機上的數據庫和其他資源,而無需以影響IIS應用程序池設置

+0

+1讓應用程序池在域服務帳戶下運行可能是正確的選擇 – BrokenGlass

相關問題