クライアントアプリケーションを使用して、認証されたユーザーのみの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がAでスタティックメンバー、このセッションクッキーの値を保持したい!
しかし、それは:(動作しません。ws.WelcomeMsg()は空の文字列を返す常にある。
private void btnWelcome_Click(object sender, EventArgs e)
{
TestService.TestService ws = new TestService.TestService(); //Create a web service
ws.SetUserName(txtUserName.Text);
string sWelcome = ws.WelcomeMsg();
System.Diagnostics.Debug.WriteLine(sWelcome);
}
以下
YESSSSSS !!!!私はASMX Webサービスのいくつかのレガシーコードを維持する必要があり、これが私の問題を解決しました!ありがとうございました! –