C# 来自DLL的会话变量值
我有一个调用DLL的web应用程序,这个DLL从web服务获取一些数据。我想做的是,当用户登录到web应用程序时,我当前正在将其用户名存储在会话变量中。在我的Web服务中,我有这样一个WebMethod:C# 来自DLL的会话变量值,c#,asp.net,web-services,session,C#,Asp.net,Web Services,Session,我有一个调用DLL的web应用程序,这个DLL从web服务获取一些数据。我想做的是,当用户登录到web应用程序时,我当前正在将其用户名存储在会话变量中。在我的Web服务中,我有这样一个WebMethod: [WebMethod(EnableSession = true)] public string getLoggedInUsername() { SessionManager session = new SessionManager();
[WebMethod(EnableSession = true)]
public string getLoggedInUsername()
{
SessionManager session = new SessionManager();
return session.Username;
}
这很好,但是当我从DLL访问Web服务时,返回的值总是空的,这是因为当控制台应用程序连接到Web服务时,一个新的会话将被初始化。是否有其他方法可以存储登录的用户名并通过我的Web服务将其传递给dll?使用应用程序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;
谢谢。查看本文:
您可能需要重新初始化代理和cookie容器等等,该用户名存储在会话中,是在web服务会话中还是在web应用程序会话中?我已更新了我的问题Medinoc,以便您可以获得更好的图片。但是,在“当控制台应用程序连接到Web服务时”中,您提到了以前未提及的控制台应用程序。它在这方面的作用是什么?还有,你的第三个代码片段,是在web应用程序中吗?很抱歉,这是我的输入错误,控制台应用程序是DLL。我键入了console应用程序,因为我总是从console应用程序尝试调试。否DLL不在我的web应用程序中。这是一个单独的dll。基本上,dll包含nunit测试,这些测试是从web应用程序调用的。