2008-09-26 46 views
10

我刚刚写了我的第一个Web服务,因此我们假设我的Web服务知识不存在。我想尝试从Web服务调用dbClass函数。不过,我需要一些参与会议的参数。有什么办法可以让这些从webservice调用这些会话变量?会话变量和Web服务

回答

20

如果您正在使用ASP.NET Web服务,你想有保持你的会话环境,需要用它说明你需要一个会话属性,美化您的Web服务方法。

[WebMethod(EnableSession = true)] 
public void MyWebService() 
{ 
    Foo foo; 
    Session["MyObjectName"] = new Foo(); 
    foo = Session["MyObjectName"] as Foo; 
} 

一旦你做到了这一点,你可以访问会话对象相似的aspx。

地铁。

+0

这看起来太棒了。然而,我的理解是,Web服务客户端需要传递一个cookie或者能够通过重定向来响应302 Found的消息。 – froggythefrog 2013-02-17 05:03:13

+0

您可以创建一个cookie容器并将其连接到您的Web服务代理。然后它将保存返回的所有cookie,包括ASP.net会话cookie。如果您有其他代理将在同一个会话中运行,您也可以与他们共享cookie容器。 – Metro 2013-03-24 17:02:56

0

也许这将工作HttpContext.Current.Session [“名称] 否则你可能不得不采取一些参数或将其存储在数据库

3

通常,Web服务不应该依赖会话数据。把它们想象成普通的方法:参数进入并且答案出来。

0

你的问题有点含糊,但我会尽我所能来回答。

我假设你的会话变量存在于进行web服务调用的服务器上,而不是在承载web服务的服务器上。在这种情况下,您需要传递必要的值作为Web服务方法的参数。

5

您应该避免增加添加会话变量的服务层的复杂性。正如有人以前指出的那样,将Web服务视为一种孤立的方法,可以从参数列表中完成所需的所有任务。

1

如果你不得不想要Session [“username”]。ToString();在后面的aspx其他C#的页面,那么你应该只需更换[的WebMethod]以上的WebService法[的WebMethod(EnableSession =真)]

感谢:)地铁

0

要在Web服务使用会话,我们必须遵循2个步骤 -

  1. 在该方法上使用[WebMethod(EnableSession = true)]属性。
  2. Session [“Name”] = 50(你想要保存什么) 请检查以下示例。
 
[WebMethod(EnableSession = true)] 
public void saveName(string pname) 
{ 
    Session["Name"] = pname; 

}