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

有帮助吗?

解决方案

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

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

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

地铁。

其他提示

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

通常,Web服务不应该依赖会话数据。将它们视为普通方法:参数进入并得出答案。

如果你不想要Session [" username"]。ToString();就像在aspx后面的其他C#页面一样,你应该简单地用[WebMethod(EnableSession = true)]替换WebService方法之上的[WebMethod]

感谢:) Metro

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

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

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

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

  1. 在方法上使用[WebMethod(EnableSession = true)]属性。
  2. 会话["名称]] = 50(您要保存的内容) 请检查以下示例。
  3. [WebMethod(EnableSession = true)]  
    public void saveName(string pname)  
    {  
       Session["Name"] = pname;  
    
     }  
    
    
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top