ASP.NET應用程式如何使用Windows帳戶登入SQL Server,本文將對此進行簡介。
開發過ASP.NET應用程式的朋友們都知道,要存取SQL Server上的資料必須先設定連線字串,在連線字串中可以設定UserID及Password使用SQL Server驗證的方式來登入資料庫。如果你想要利用Windows驗證來存取SQL Server該怎麼做呢?本文以Windows 7 Enterprise x86 + IIS 7.5 + Visual Studio 2010 Ultimate + SQL Server 2008 R2 Standard來進行實驗,說明如何將VS2010所開發的ASP.NET應用程式部署至IIS 7.5上,利用Windows驗證來存取SQL Server。
首先我們以下列的ASP.NET程式碼利用整合式驗證來以Windows驗證方式連到DB1伺服器上的TestDB資料庫,最後將資料表t1的總筆數印在網頁上。
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Web;
5: using System.Web.UI;
6: using System.Web.UI.WebControls;
7: using System.Data;
8: using System.Data.SqlClient;
9:
10: namespace WebApplication6
11: {
12: public partial class WebForm7 : System.Web.UI.Page
13: {
14: protected void Page_Load(object sender, EventArgs e)
15: {
16: SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder();
17: scsb.DataSource = "DB1";
18: scsb.InitialCatalog = "TestDB";
19: scsb.IntegratedSecurity = true;
20: using (SqlConnection con = new SqlConnection(scsb.ToString()))
21: {
22: if (con.State != ConnectionState.Open)
23: con.Open();
24: using (SqlDataAdapter adapter = new SqlDataAdapter("select * from t1",con))
25: {
26: DataTable dt = new DataTable();
27: adapter.Fill(dt);
28: Response.Write(dt.Rows.Count);
29: }
30: }
31: }
32: }
33: }
接著將應用程式部署至本機的預設網站下的TestDB應用程式(如下圖)。
此時執行應用程式將接收到如下圖的錯誤訊息,該如何排除?
首先我們先看TestDB這個應用程式所使用的應用程式集區是哪一個,點選應用程式後再點選右方動作的進階設定。
以筆者環境為例,TestDB是使用ASP.NET v4.0這個應用程式集區(如下圖)。
接著我們從應用程式集區點選ASP.NET v4.0這個應用程式集區,在點選右方的進階設定,發現在識別的屬性是設定在ApplicationPoolIdentity。
為了讓ASP.NET使用Windows驗證登入SQL Server,請點選上圖右的黃色螢光筆標示的地方來自訂帳戶作為應用程式集區的識別,按下圖左的設定按鈕來設定認證所使用的帳戶和密碼。
設定完畢之後在重新整理網頁,即可順利以Windows驗證連上SQL Server。
結論:使用SQL Server驗證或Windows驗證各有優缺點,各位可以依照自己的情況來選擇適合的方式。
【參考資料】