私はVS2010、asp.net c#を使用しています。
私はこのように宣言されたWebMethodを持っています
[WebMethod(EnableSession = true)]
public String getErrorMsg()
{
if (HttpContext.Current.Session["error"] == null) return "empty";
else return ((String)(HttpContext.Current.Session["error"]));
}
System.Web.Services.WebServiceクラス(継承)の内部。
別のWebMethodで、このメッセージを設定しました。このようなものだと仮定しましょう。
[WebMethod(EnableSession = true)]
public void firstMethod()
{
HttpContext.Current.Session["error"] ="bla";
}
別のプロジェクトでは、このWebサービスにサービス参照を追加しました。次に、次のように使用してみます。
WebService1.WebService1SoapClient MyService=
new WebService1.WebService1SoapClient();
MyService.firstMethod(); // this calls the method that sets
//the "bla" string in the session
String str=MyService.getErrorMsg();
System.Diagnostics.Debug.WriteLine("Message "+str);
Strは「空」です。
最初の方法では、「bla」文字列がセッションに設定されます。このメソッドでimである限り、セッションに保存されたデータを使用できます。WebServiceをもう一度呼び出すと、以前のセッションデータは存在しなくなります。
私はいたるところを見てきました。私はこの例だけを見つけました:
// instantiate the proxy
localhost.MyDemo MyService = new localhost.MyDemo();
// create a container for the SessionID cookie
MyService.CookieContainer = new CookieContainer();
// call the Web Service function
Label1.Text += MyService.HelloWorld() + "<br />";
しかし、2つの主な問題があります。
1)私のWebServiceをオブジェクトとして使用することはできません。つまり、この例のように、そのクラスで「new」を使用することはできません。
WebServiceを使用するためにWebService1SoapClientを使用します。
2)WebService1SoapClientオブジェクトにはそのようなものはありません。
この例は、古いvs/.netバージョンで使用されたに違いないと思います。
Webサービスにセッションデータを保持する方法を知っている人はいますか?