我正在使用客戶端應用程序連接到僅用於已驗證用戶的Web服務。這是最簡單的例子:
我的web服務代碼:在調用ASMX Web服務時維護會話
public class TestService : System.Web.Services.WebService
{
[WebMethod(EnableSession = true)]
public string WelcomeMsg()
{
return "Hello: " + Session["UserName"] + "! Welcome to our store.";
}
[WebMethod(EnableSession = true)]
public void SetUserName(string sName)
{
Session["UserName"] = sName;
}
}
這裏是我的客戶端應用程序代碼(Windows形式,而不是網絡基礎):
private void btnSetName_Click(object sender, EventArgs e)
{
TestService.TestService ws = new TestService.TestService(); //Create a web service
MainForm.m_ccSessionInfo = new System.Net.CookieContainer(); //Create a CookieContainer
ws.CookieContainer = MainForm.m_ccSessionInfo; //Set CookieContainer of the web service
ws.SetUserName(txtUserName.Text); //Set value of session
ws = null;
}
private void btnWelcome_Click(object sender, EventArgs e)
{
TestService.TestService ws = new TestService.TestService(); //Create a web service
ws.CookieContainer = MainForm.m_ccSessionInfo; //Set CookieContainer back
string sWelcome = ws.WelcomeMsg(); //Get value from session property
ws = null;
System.Diagnostics.Debug.WriteLine(sWelcome);
}
在我的例子MainForm.m_ccSessionInfo是靜態成員,我想保持在這一個會話cookie值!
但是,它不工作:(該ws.WelcomeMsg()總是返回一個空字符串。
YESSSSSS !!!!我必須爲ASMX Web服務維護一些遺留代碼,這解決了我的問題!謝謝! –