我試圖打我的Intranet網站,並得到它作爲我登錄的Windows用戶運行一個簡單的SQL查詢。Windows身份驗證不與ASP.NET網頁工作
當我通過Visual Studio進行調試時,一切正常。當我點擊網絡服務器時,出現sqlconnection錯誤,說:「錯誤:用戶'YOUR_DOMAIN \ YOUR_WEBSERVER_NAME'登錄失敗。」
Request.ServerVariables[AUTH_USER]: YOUR_DOMAIN\UserBob
System.Security.Principal.WindowsIdentity.GetCurrent().Name: NT AUTHORITY\NETWORK SERVICE
Page.User.Identity.Name: YOUR_DOMAIN\UserBob
System.Threading.Thread.CurrentPrincipal.Identity.Name: YOUR_DOMAIN\UserBob
那麼如何獲得在UserBob下執行的SQL查詢?
這裏是我的設置:
<system.web>
<compilation debug="true" targetFramework="4.0"/>
<authentication mode="Windows"/>
<identity impersonate="true"/>
<customErrors mode="Off"/>
</system.web>
Web服務器是一個雙贏2008服務器IIS7,Windows身份驗證時,匿名身份驗證關閉。
代碼很簡單:
Response.Write("Request.ServerVariables[AUTH_USER]: " + Request.ServerVariables ["AUTH_USER"].ToString());
Response.Write("<br>System.Security.Principal.WindowsIdentity.GetCurrent().Name: " + System.Security.Principal.WindowsIdentity.GetCurrent().Name);
Response.Write("<br>Page.User.Identity.Name: " + Page.User.Identity.Name);
Response.Write("<br>System.Threading.Thread.CurrentPrincipal.Identity.Name: " + System.Threading.Thread.CurrentPrincipal.Identity.Name);
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["CarbonDB"].ConnectionString);
conn.Open();
SqlCommand sqlcom = new SqlCommand("dbo.runsomething", conn);
sqlcom.CommandType = CommandType.StoredProcedure;
SqlDataReader sqlDataReader = sqlcom.ExecuteReader();
conn.Close();
應用程序池是集成管道。是的,傳遞身份驗證被檢查。 – Dakhath 2010-11-04 23:04:12