【问题标题】:Session Variable value from DLL来自 DLL 的会话变量值
【发布时间】:2013-04-16 11:51:29
【问题描述】:

我有一个调用 DLL 的 Web 应用程序,该 DLL 从 Web 服务获取一些数据。我想做的是当用户登录到网络应用程序时,我目前将它的用户名存储在会话变量中。在我的 webService 中,我有一个这样的 WebMethod:

    [WebMethod(EnableSession = true)]
    public string getLoggedInUsername()
    {
        SessionManager session = new SessionManager();

        return session.Username;
    }

这工作正常,但是当我从 DLL 访问 web 服务时,返回的值始终为 NULL,这是因为当控制台应用程序连接到 web 服务时,将初始化一个新会话。有没有其他方法可以存储登录的用户名并通过我的网络服务将其传递给 dll?使用 Application Get/Set 不是一个好的决定,因为我的 webapp 需要处理不同的用户。谁能指出我正确的方向?

SessionManager 类包含以下内容:

    public string Username
    {
        get
        {
            return (string)HttpContext.Current.Session["Username"];
        }
        set
        {
            HttpContext.Current.Session["Username"] = value;
        }
    }

在用户登录到我的应用程序后(我正在使用 asp.net 成员资格):我以这种方式将用户名分配给会话变量:

            SessionManager session = new SessionManager();
            session.Username = User.Identity.Name;

谢谢。

【问题讨论】:

  • 等等,session中存储的那个用户名,是在webservice的session还是web应用的session?
  • 我更新了我的问题 Medinoc,以便您获得更好的照片
  • 谢谢。但是,在“当控制台应用程序连接到 Web 服务时”中,您谈到了之前未提及的控制台应用程序。它在其中的作用是什么?还有,你的第三个代码sn-p,是在web app里吗?
  • 很抱歉这是我的错字,控制台应用程序是 DLL。我输入了控制台应用程序,因为我总是从控制台应用程序尝试它以进行调试。
  • 不,DLL 不在我的网络应用程序中。这是一个单独的dll。基本上 dll 包含 nunit 测试,这些测试是从网络应用程序调用的。

标签: c# asp.net web-services session


【解决方案1】:

查看这篇文章:http://www.codeproject.com/Articles/35119/Using-Session-State-in-a-Web-Service 您可能需要重新初始化代理和 cookie 容器

【讨论】:

    猜你喜欢
    • 2019-06-07
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多