2013-07-30 44 views
-1

我需要一个全局已知的Web服务应用程序变量。 由于是基于网页的,所以全局声明的变量的值在再次调用时保持不变。Web服务应用程序的全局已知变量

我也尝试在web方法上使用Session,但在调用另一个方法时它被清除。

这是一个代码示例。

UI部分

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服务的一个参数,这就是为什么我需要它在全局声明。

+3

如何回合使用静态变量 – rajeemcariazo

+0

静态变量的作品。谢谢! –

回答

0

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

I.e.如果你正在运行与ASP.Net您的服务,而不是配置将是web.config和自定义值,如下所示:

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

代码与ConfigurationManager阅读:

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