我正在研究一个connString存储在会话变量中的项目。问题是当用户不在一段时间(有意义)时会话耗尽,从而使用户不得不再次登录以创建新连接。
用户从Web服务器上配置的ODBC连接列表中选择他的数据库,因此用户可以选择的不同connStrings无法存储在web.config中,因为用户可以根据需要添加新的连接。
我想知道如何解决这个问题。我应该告诉用户不要离开他的电脑20分钟+或者我可以将connString存储在其他地方吗?我看过网站弹出一个说法"你的会话将在5分钟后到期,按确定继续使用网站"或类似的东西。
此外,由于网站在许多用户之间共享,因此不可能制作静态变量,因此如果user1选择" connString1"和user2选择" connString2"之后,然后user1将不幸地运行" connString2"以及。
希望你能提供帮助:)
**
这可以解决方案吗?: 我创建了一个" BasePage"我的网页继承自哪些。在这个基页中,我创建了一个隐藏字段,并在加载时将connString添加到value属性。此外,我将加密connString,以便用户无法在源代码中看到该值。 然后,如果会话超时,我将使用隐藏字段中的值恢复会话,并且站点不会崩溃。
答案 0 :(得分:0)
您可以使用app.config来获取和设置配置文件。看看这个,看看存储文件的实现。它同样容易获得设置。 ConfigurationManager doesn't save settings
//编辑:如果您不希望用户能够看到您的连接字符串名称,那么您可以在hidden_html或cookie或会话cookie中建议另一个。在这个例子中,我使用cookie。这应该可以解决你的问题。
设置Cookie:
HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie["ConnectionString"] = "MyCOnnectionValue";
myCookie.Expires = DateTime.Now.AddDays(1d);//For one day.
Response.Cookies.Add(myCookie);//Will store the cookie within the users browser so your code can read from it at every request.
然后:
if (Request.Cookies["UserSettings"] != null)
{
string userSettings;
if (Request.Cookies["UserSettings"]["ConString"] != null)
{ userSettings = Request.Cookies["UserSettings"]["ConString"]; }
}
string connectionStringNameToUse;
if(userSettings =="Connection1"){
connectionStringNameToUse = "here you can have your name of connectionsstring";
}etc with ypur other connectionsstrings here.
//Then use your connectionsstring here:
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings[connectionStringNameToUse ].ToString()))
{
cn.Open();
using (SqlCommand command = new SqlCommand
("delete TBL from RatingListObjects TBL where ( TBL.TradeObject1Id = @MY_ID ) or ( TBL.TradeObject2Id = @My_ID ) ", cn))
{
command.Parameters.Add(new SqlParameter("@MY_ID", customerToRemove.TradeObjectId));
command.ExecuteNonQuery();
}
}
另一方面。我会使用db中的其他用户数据来保存所选用户数据库。但是,如果您只希望用户在程序设置的某个时间内选择了一个连接字符串,那么这是可行的。它不会允许他们看到连接字符串名称。希望这有帮助,祝你好运!
答案 1 :(得分:0)
您可以将用户的连接字符串首选项存储在其个人资料中,然后保留其个人资料吗? http://odetocode.com/articles/440.aspx
您还应该能够为匿名用户执行此操作。
顺便说一句,我不知道Profile API有多安全,它们应该没问题,但为了以防万一,您可能希望存储Enum值,然后将其映射到代码中的Connection字符串。 / p>