10

我刚刚编写了我的第一个 Web 服务,所以让我们假设我的 Web 服务知识不存在。我想尝试从 Web 服务调用 dbClass 函数。但是我需要会话中的一些参数。有什么办法可以让这些从 web 服务调用这些会话变量?

4

7 回答 7

21

如果您正在使用 ASP.NET Web 服务,并且希望为您维护一个会话环境,则需要使用指示您需要会话的属性来修饰您的 Web 服务方法。

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

完成此操作后,您可以访问类似于 aspx 的会话对象。

地铁。

于 2008-09-26T16:51:08.117 回答
5

您应该避免增加服务层添加会话变量的复杂性。正如之前有人指出的那样,将 Web 服务视为孤立的方法,它们从参数列表中获取执行任务所需的所有内容。

于 2008-09-26T16:56:31.597 回答
3

一般来说,Web 服务不应依赖会话数据。把它们想象成普通的方法:参数输入,答案出来。

于 2008-09-26T16:52:32.527 回答
1

如果你需要 Session["username"].ToString(); 与 aspx 后面的其他 C# 页面一样,您只需将 WebService 方法上方的 [WebMethod] 替换为 [WebMethod(EnableSession = true)]

感谢:) 地铁

于 2012-03-06T10:59:48.117 回答
0

也许这会起作用 HttpContext.Current.Session["Name] 否则您可能必须接受一些参数或将它们存储在数据库中

于 2008-09-26T16:48:09.823 回答
0

你的问题有点模糊,但我会尽力回答。

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

于 2008-09-26T16:52:37.253 回答
0

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

  1. 在方法上使用 [WebMethod(EnableSession = true)] 属性。
  2. Session["Name"] =50 (你想保存什么) 请检查以下示例。
[WebMethod(EnableSession = true)]  
公共无效保存名称(字符串pname)  
{  
   会话[“名称”] = pname;  

 }  

于 2017-05-16T15:18:31.423 回答