我需要一个 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 方法上,这就是为什么我需要全局声明它的原因。