【问题标题】:Session Variables and Web Services会话变量和 Web 服务
【发布时间】:2017-05-16 23:18:31
【问题描述】:

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

【问题讨论】:

    标签: web-services session


    【解决方案1】:

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

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

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

    地铁。

    【讨论】:

    • 这看起来棒极了。然而,我的理解是,Web 服务客户端需要要么传回 cookie,要么能够通过重定向来响应 302 Found 消息。
    • 您可以创建一个 cookie 容器并将其连接到您的 Web 服务代理。然后它将保存所有返回的 cookie,包括 ASP.net 会话 cookie。如果您有其他将在同一会话中运行的代理,您也可以与他们共享 cookie 容器。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 为什么不呢?我正在尝试实现一些安全性,当用户成功登录我的 Web 应用程序时,我设置了一个会话变量,以确保调用该方法的用户成功登录到我的 Web 应用程序我检查该会话变量,然后仅在他们执行 webmethod 时执行拥有正确的权限,这很糟糕吗?实现目标的正确方法是什么?
      • 通常每个客户端都会获得一个令牌来持有。然后它会将该令牌与每个请求一起作为标头、查询字符串或表单正文发送以进行身份​​验证。
      【解决方案4】:

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

      感谢 :) 地铁

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            【解决方案7】:

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

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

            【讨论】:

              猜你喜欢
              • 2017-03-13
              • 2013-10-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多