【问题标题】:Globally known variable for Web Service ApplicationWeb 服务应用程序的全局已知变量
【发布时间】: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


【解决方案1】:

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

即如果您使用 ASP.Net 运行您的服务,那么配置将是 web.config 并且自定义值如下所示:

<appSettings>
  <add key="IsProduction" value="true"/>
</appSettings>

使用ConfigurationManager阅读的代码:

 var isProduction = ConfigurationManager.AppSettings["IsProduction"] == "true";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 2010-11-12
    相关资源
    最近更新 更多