0

我正在開發一個使用實體框架的asp.net mvc Web應用程序。同樣的應用程序應該爲不同的客戶端部署在Intranet模型中。如何使用Windows身份驗證在運行時管理連接字符串

我的應用程序從客戶端數據庫獲取數據,這些客戶端數據庫的結構完全相同,但每個客戶端的數據都不相同,這就是爲什麼我必須在運行時修改連接字符串以匹配客戶端環境(數據庫名稱和服務器名稱)。除此之外,我的網絡應用程序使用Windows身份驗證連接到數據庫。

<connectionStrings> 
<add name="LK_Entities" connectionString="metadata=res://*/DAL.Model1.csdl|res://*/DAL.Model1.ssdl|res://*/DAL.Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=LKSERVER\SQLSERVER2005;initial catalog=LK_2014;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
</connectionStrings> 

我想知道的是怎麼可能修改運行時的連接字符串知道用戶需要輸入服務器名稱和數據庫名稱,一旦應用程序運行?而且,如何集成Windows身份驗證來連接到數據庫?

+3

爲什麼你不能有多個連接字符串,並選擇一個你想在運行時使用的並作爲參數傳遞給你的dbContext。 – Shaz

+0

或者在代碼中構建連接字符串,然後將其傳遞到數據上下文中。構造函數接受名稱或連接字符串。 –

+0

@Shaz我無法定義連接字符串,因爲它取決於客戶端輸入BD名稱和服務器名稱。 – Selim

回答

0

所以這個問題分兩部分。到目前爲止的註釋回答了第一部分(在運行時動態傳遞連接字符串DbContext)。

public TheDbContext() : base("the connection string goes here"){} 

對於第二部分,則可能需要在web.config添加<authentication mode="Windows">。此外,在IIS中啓用Windows身份驗證並禁用匿名身份驗證。

+0

我不希望使用Windows身份驗證Web應用程序本身,但我想使用Windows身份驗證來訪問數據庫。換句話說,試圖運行webapp的當前windows用戶必須被授予對SQLSERVER數據庫的訪問權才能正確顯示來自db的信息。 – Selim

+0

您必須在Web應用程序中實施Windows身份驗證才能使集成安全性發揮作用。你可以在這裏找到更多的信息http://msdn.microsoft.com/en-us/library/907hb5w9.aspx。 ''提供給操作系統的Windows標識用於權限檢查,例如NTFS文件權限,或用於使用集成安全性連接到數據庫。 – RyanCJI

+1

你是對的,我必須使用Windows身份驗證和身份模擬來連接SQLSERVER與當前的Windows用戶。不幸的是我的情況遇到了一個雙跳問題..這個鏈接是在談論它[鏈接](http://blogs.msdn.com/b/knowledgecast/archive/2007/01/31/the-double-hop-problem .aspx) – Selim

相關問題