如何在asp.net-4.5的静态“ webmethod”函数中获取非静态值

时间:2019-02-06 15:16:03

标签: c# asp.net asp.net-4.5

在我的asp.net-4.5解决方案中。我有User.Username变量,该变量设置正确,但不是静态的。我需要在静态方法中使用此变量,该方法通过Ajax在下面的.aspx页中通过AJAX调用:

    [WebMethod]
    public static bool DeleteFromDB (string programId)
    { 
       ... 
       Log.Write("deleted by: " + User.Username)        
    }

我的问题是我不能在那里使用User.Username,因为它是一个非静态变量。我无法创建一个静态变量并将其值设置为static一个,或以某种方式将非static转换为static。试图使用hiddenField和Label,但也无法从静态函数中获取它们的值。

请注意,User.Username不等于System.Security.Principal.WindowsIdentity.GetCurrent().Name;

User.Username是用户登录时使用的电子邮件地址。

成功的最简单方法是什么?谢谢。

1 个答案:

答案 0 :(得分:0)

您必须确保当用户登录时,将唯一标识他/她的数据存储为会话数据(id,用户名或电子邮件可以是该数据,但id是首选)。如果尚未完成,这是第一件事。

您应该能够通过会话数据来获取用户,如果将其获取到变量中,我们将其称为myUser,那么您将能够读取其Username,最好通过getter读取。