2016-01-22 30 views
2

在IIS上發佈默認的Visual Studio ASP站點一切都很好。實體框架和IIS的Windows身份驗證

我設置了窗口autentification結束了一些努力在頂部rigth角我得到了歡迎MyDomain/MyAcount !.

酷!

後來我有一個簡單的EF查詢代碼(它在本地工作我得到的結果) MyDomain/MyAcount作爲SQL窗口帳戶存在一切正常。

的probleme是當應用程序池EF不要使用顯示頂部分辯角落當前用戶「MYDOMAIN/MyAcount」,但使用的池用戶帳戶「紐約泛歐NT \ NETWORK」

,它拋出一個在包含EF查詢的頁面上出現很好的自動化錯誤。

這裏我EF連接字符串:

<connectionStrings> 
    <add connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=M35824\MSQL32BIT;initial catalog=UNITY_DB_PROD;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" name="UNITY_DB_PRODEntities" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 

我不想給分辯爲「紐約泛歐NT \ NETWORK」在SQL它會幫助,但它不是我需要每一個查詢和存儲過程必須給exec作爲「已連接的用戶」

回答

0

集成安全性 - 如果爲false,則在連接中指定用戶標識和密碼 。如果爲true,則使用當前的Windows帳戶憑據 進行身份驗證。 Source

所以.. 我覺得EF正從ISS這個信息,你需要改變你的頁面池。應用程序池標識「MyDomain/MyAcount」...或將其設置爲false

2

如果您需要使用集成身份驗證,則需要使用impersonation將您的憑據轉發到sql-server或簡單地爲應用程序池定義另一個帳戶。

+0

我不夠活躍,我不能downvote,但這個回答直接違反堆棧溢出回答指導方針。具體來說,答案應該詳細說明解決方案,而不是僅僅鏈接到其他地方,因爲外部網站可能很容易停下來,重新定位等等。您甚至會鏈接到頂部有警告標語的文章,聲明不會維護此文檔。答案應該用自我包含的內容100%解決問題,只有連接到外部來源才能進一步閱讀,如果有興趣的話。 – James

1

我用它來模仿finaly不知道它是否是這樣做的好方法,但至少它按預期工作沒有成功嘗試模擬連接字符串。

public static List<List<string>> GetCountryData() 
     { 
      List<List<string>> DataRows = null; 
      using (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate()) 
      { 
       using (var dbContext = new UNITY_DB_PRODEntities()) 
       { 

        DataRows = dbContext.final_full_data.Where(x => x.computername.Contains("m570")).Select(x => new List<string> { x.computername, x.DCAI_CENTRE, x.AD_CN }).AsEnumerable().ToList(); 
       } 
      } 
      return DataRows; 
     } 

隨時提供其他方法。

+0

當您使用Windows集成身份驗證時,您可以嘗試在您的web.config文件中的下添加。儘管這會使整個應用程序在登錄用戶帳戶下運行。 – lobiZoli