Ошибка исключения сеанса - PullRequest
0 голосов
/ 25 апреля 2018

Мой код выдаёт мне эту ошибку, а я не понимаю, почему и что делать "Ошибка 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 голосов
/ 25 апреля 2018

Свойство Session является нестатическим свойством, которое определяется на основе Controller в .NET ( msnd ).

Код, указанный в вашем вопросе, вы пытаетесь получить доступ к этому нестатическому методу без статического метода. Это невозможно.

Вы можете решить это тремя способами:

  1. Если метод находится в вашем контроллере, вы можете просто сделать его нестатичным для доступа к свойству Session.
  2. Вы также можете передать нужное свойство (userLoggedBranch) в качестве параметра в свой метод UpdateActivationResult. Какое бы действие ни вызывало этот метод, ему просто нужно будет передать это значение.

    Так что-то вроде:

    public static bool UpdateActivationResult(
            string recordId, 
            string resultPart, 
            string failureMessage,
            int reconciliation_count,
            string userLoggedBranch) {  
        // Your method code
    
  3. Передайте сам сеанс или что-то, из чего вы можете получить доступ к сеансу (например, HttpContext или HttpRequest).


0 голосов
/ 25 апреля 2018

Объявите userLoggedBranch как статическую переменную или лучше просто получить доступ к сеансу в соответствующем методе вместо передачи его в качестве параметра

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...