2013-07-30 80 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";