我正在使用 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";
}
在另一个项目中,我向这个 WebService 添加了一个 Service Refrence。然后我尝试像这样使用它:
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”字符串设置为会话。只要我在这个方法中,我就可以使用会话存储的数据。当我再次调用 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 />";
但是有两个主要问题:
1)我的 WebService 不能用作对象,这意味着我不能在该类上使用“new”,就像这个例子一样。
我使用 WebService1SoapClient 来使用 WebService。
2)WebService1SoapClient对象中没有CookieContainer这个东西。
我认为这个例子一定是在旧的 vs/.net 版本中使用过的。
有谁知道如何在 webService 中保存 Session 数据?