C# Web服务应用程序的全局已知变量

C# Web服务应用程序的全局已知变量,c#,web-services,session-state,C#,Web Services,Session State,我需要一个web服务应用程序上的全局已知变量。 由于是基于web的,因此全局声明变量的值在再次调用时保持不变 我还尝试在web方法上使用Session,但在调用另一个方法时它被清除 下面是一个代码示例 用户界面部分 private void btnOKLogIn_Click(object sender, EventArgs e) { CaprepWS caprepWS = new CaprepWS(); caprepWS.setDatabase(Program.isProduct

我需要一个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());
}
Web服务部分

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

看起来您正在寻找应用程序的配置设置

例如,如果使用ASP.Net运行服务,则配置和自定义值如下所示:


使用静态变量怎么样静态变量可以工作。谢谢
 var isProduction = ConfigurationManager.AppSettings["IsProduction"] == "true";