会话异常错误

时间:2018-04-25 12:12:26

标签: c# .net session

我的代码给了我这个错误,我没有得到原因和做法 "错误13非静态字段,方法或属性需要对象引用“System.Web.UI.Page.Session.get'" 我已经在使用会话来获取另一个页面和方法的参数并且工作正常,现在我想在我为我的应用程序创建的预定作业中使用相同的参数,但是没有用。

public static bool UpdateActivationResult(string recordId, string resultPart, string failureMessage, int reconciliation_count)
    {
        OracleConnection conn = new OracleConnection();
        OracleTransaction transaction = null;
        OracleCommand cmd;

        string updateQuery = "";
        int rowsUpdated = 0;
        string notes = "";
        string branch = clsUtility.GetHO;
        clsUtility.CDFOperations operation = clsUtility.CDFOperations.CanNotActivateCard;
        string userLoggedBranch = "";

        try
        {

            userLoggedBranch = Session["userDegaS"].ToString(); //this row is giving me error

            clsUtility.WriteLog4Net(recordId + " - " + resultPart + " - " + failureMessage, null, clsUtility.LogType.Debug, "");

            using (conn = new OracleConnection(clsUtility.ConnectionString))
            {  etc

我想在调用此方法时使用此参数

if (reconciliation_count == 5 && !resultPart.Equals("SUCCESS"))
                    {
                        Utility.clsUtility.SendNotificationAsHTML(recordId, branch, operation, userLoggedBranch);                          
                    }

知道我哪里做错了吗?

2 个答案:

答案 0 :(得分:0)

将userLoggedBranch声明为静态变量或更好的方法是简单地访问相应方法中的会话,而不是将其作为参数传递

答案 1 :(得分:0)

Session属性是一个非静态属性,在.NET(https://docs.mongodb.com/ecosystem/drivers/python/)的基础Controller上定义。

您的问题列出的代码,您试图从没有静态方法访问此非静态方法。这是不可能的。

您可以通过三种方式解决问题:

  1. 如果方法在您的控制器中,您只需将其设置为非静态即可访问Session属性。
  2. 您还可以将所需的属性(userLoggedBranch)作为参数传递到方法UpdateActivationResult中。无论采取什么行动,该方法都必须传递此值。

    这就是:

    public static bool UpdateActivationResult(
            string recordId, 
            string resultPart, 
            string failureMessage,
            int reconciliation_count,
            string userLoggedBranch) {  
        // Your method code
    
  3. 传递会话本身或您可以访问会话的内容(例如HttpContextHttpRequest)。