【发布时间】:2013-07-30 05:29:52
【问题描述】:
我需要一个 Web 服务应用程序上的全局已知变量。 由于是基于 Web 的,全局声明的变量的值在再次调用时保持不变。
我也尝试在web方法上使用Session,但是调用其他方法时它被清除了。
这是一个代码示例。
界面部分
private void btnOKLogIn_Click(object sender, EventArgs e)
{
CaprepWS caprepWS = new CaprepWS();
caprepWS.setDatabase(Program.isProduction);
string usrInfo = caprepWS.getUserInfo(tbUserName.Text.ToUpper().Trim());
}
网络服务部分
[WebMethod(Description = "Database switcher", EnableSession = true)]
public void setDatabase(bool isProduction)
{
Session["isProduction"] = isProduction;
}
[WebMethod(Description = "Get User Info", EnableSession = true)]
public string getUserInfo(string username)
{
string wsResult = null;
DataAccess sql = new DataAccess((bool)Session["isProduction"]);
try
{
sql.OpenConn();
wsResult = sql.Scalar(
sql.spReader(sqlRoot + "spGetUserInfo.SQL")
, username);
}
catch (Exception ex)
{
errorWritter(ex.Message);
wsResult = null;
}
finally
{
sql.Dispose();
}
return wsResult;
}
但即使我在 UI 上使用相同的实例,会话在其他方法上也是未知的(在 getUserInfo 上)并且它为空。
问题是我避免将这个变量放在每个 web 方法上作为我的 web 服务的参数,这就是为什么我需要全局声明它。
【问题讨论】:
-
如何使用静态变量
-
静态变量有效。谢谢!
标签: c# web-services session-state