簡體   English   中英

asp.net Web應用程序中的ADO是否總是使用IIS服務帳戶連接到SQL Server?

[英]Does ADO in an asp.net web app always use the IIS service account to connect to SQL Server?

我有一個ASP.NET Web應用程序,在其中使用了ado sql連接來連接到SQL Server上的數據庫。 ado連接字符串與用戶登錄名一起提供,該用戶登錄名具有足夠的權限來讀取/寫入數據庫。 我最初使用自己的應用程序池在自己的IIS網站中推出了該Web應用程序,並且一切正常。

但是,我現在正在嘗試將該Web應用程序包含在一個已經存在的網站下。 在嘗試了要求對數據庫執行INSERT或UPDATE的任何功能之前,一切似乎都工作正常。 事實證明,連接到數據庫的用戶沒有足夠的權限。 奇怪的是,我進行了一些研究,然后發現了一個論壇帖子,該帖子建議IIS網站服務帳戶需要SQL數據庫中的讀/寫權限才能使應用程序執行INSERT / UPDATE。 這是真的?

我對其進行了測試,是的,的確確實如此,僅適用於應用程序池身份帳戶。 我的方案的詳細信息如下:

  • 該Web應用程序的第一個IIS網站具有一個在NETWORK SERVICE下運行的應用程序池身份,該服務池已經具有SQL SERVER的登錄名。

  • 現有網站的應用程序池標識在域帳戶下運行。 該站點已經運行了另一個Web應用程序,該應用程序使用LINQ(由其他人開發)連接到相同的數據庫。 我是Web開發的新手,並且對ADO更加熟悉,所以這就是我選擇的方法。

  • 上面提到的域帳戶以前沒有SQL Server登錄/用戶映射。 我將其設置為dbowner,然后將新的web應用程序viola在現有網站下運行。

盡管我找到了一種可行的方法,但我們不希望為此Identity帳戶創建SQL登錄名。 我們希望Web應用程序的ADO SqlConnection中提供的登錄名是實際連接的登錄名,因為這不是重點嗎? 此外,另一個使用LINQ的Web應用程序可以在同一網站上正常連接的事實使我們相信這是可能的。 在這一問題上,有專家提供兩美分嗎?

當連接字符串使用Integrated Security時,將使用SQL Server Windows身份驗證。 如果身份驗證模式是“ SQL Server身份驗證”(登錄名/密碼),則使用哪個帳戶都沒有關系。

通過檢查建立ADO連接的進程的Windows(域)帳戶,可以使用此功能。

在ASP.Net Web應用程序中,涉及三個帳戶-IIS服務帳戶,網站目錄安全帳戶,應用程序池帳戶。 連接到SQL Server時,運行ASP.NET Web應用程序的進程是w3wp.exe ,該進程在“ Application Pool, Identity帳戶下運行。 這是您需要配置訪問權限的帳戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM