[英]Connection string based on location (c# + asp.net)
我的應用程序中有3個連接字符串:
<add name="DBConnectionString" connectionString=""/>
<add name="ADConnectionString" connectionString="" />
<add name="TestDBConnectionString" connectionString="" />
現在在代碼中我做了:
public static string DefaultConnection
{
get
{
// this is used so that there will be no chance of modifing the original data when testing locally
if (HttpContext.Current.Server.MachineName == "xxx")
return ConfigurationManager.ConnectionStrings["TestDBConnectionString"].ConnectionString;
else
return ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString;
}
}
這在后面的代碼中有效,但是當我執行普通的SqlDataSource然后執行以下操作時:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%# DBConnections.DefaultConnection %>" />
我得到: ConnectionString屬性尚未初始化。 我究竟做錯了什么? AFAIK這應該得到我想要的值...
我不想在連接部分中做,因為我想確保不會弄亂生產服務器,因為我在同一個網絡中……我可以完成整個發布項目,但這太過麻煩了。
除非您對SqlDataSource所在的容器進行數據綁定,否則<%# %>
語法將不起作用(因為這是綁定語法,並且該屬性從未綁定),所以您的問題是ConnectionString屬性只是未設置完全沒有
我將在后面的代碼中進行設置,或者使用完全不同的配置進行生產。 對於后面的代碼:
SqlDataSource1.ConnectionString = DBConnections.DefaultConnection;
另一個選擇是,如果您在大量地方使用相同的連接,只需創建一個從SqlDataSource繼承並覆蓋ConnectionString屬性的控件,僅在該getter / setter中進行設置,然后在各處使用該控件即可。
就像是:
public class MySqlDataSource : SqlDataSource
{
public string _customConnectionStr; //Allow a custom connection still
public override string ConnectionString {
//Default the connection if a custom isn't set
get { return _customConnectionStr ?? DBConnections.DefaultConnection; }
set { _customConnectionStr = value; }
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.