2017-01-20 6 views
1

исключение типа «System.NullReferenceException» произошло в App_Code.p9yip9ku.dll, но не был обработан в пользовательском кодеЯ работаю над редактированием одной веб-страницы с C# и .NET-платформой. У меня есть кнопка выхода из системы, что, когда я нажимаю он показывает мне ошибку

Additional information: Object reference not set to an instance of an object. это ошибка.

Мой код:

using System.Configuration; 
using UserActionLogger; 

/// <summary> 
/// Summary description for UserActions 
/// </summary> 
public static class UserData 
{ 
    private static UserActions _uaUserActions; 

    public static void InitUserData(int uID, string IP) 
    { 
     var cString = ConfigurationManager.ConnectionStrings["basteConnectionString"].ConnectionString; 
     _uaUserActions = new UserActions(cString, uID, IP); 
    } 

    public static void Logout() 
    { 
     _uaUserActions.Logout(); 
    } 

    public static void InsertAction(int actionid, long value) 
    { 
     _uaUserActions.InsertAction(actionid, value); 
    } 

} 

и функция вызывается как:

else if (type == 1002) //User Logout 
      { 
       Session["current_user"] = "NoUser"; 

       UserData.Logout(); 
       var jss = new JavaScriptSerializer(); 
       this.Response.Write(jss.Serialize(Session["current_user"])); 
       this.Response.ContentType = "application/json"; 
       this.Response.End(); 
       //TODO : LOGOUT 
      } 
+0

Проверьте, не получил ли его вызов InitUserData(). Я думаю, что _uaUserActions имеет значение –

+0

, в какой строке вы получаете исключение? возможно, 'ConnectionStrng' имеет значение – esiprogrammer

+0

@esiprogrammer здесь: _uaUserActions.Logout(); –

ответ

0

В Уре UserData имеет _uaUserActions, который нуль при вызове UserData.logout вы должны вызвать UserData.InitUserData(uID, IP); перед тем UserData.Logout();

else if (type == 1002) //User Logout 
     { 
      Session["current_user"] = "NoUser"; 

      UserData.InitUserData(uID,IP); //you have to call this befor Logout method. 
      UserData.Logout(); 
      var jss = new JavaScriptSerializer(); 
      this.Response.Write(jss.Serialize(Session["current_user"])); 
      this.Response.ContentType = "application/json"; 
      this.Response.End(); 
      //TODO : LOGOUT 
     } 
0

так я решил:

else if (type == 1002) //User Logout 
      { 
       UserDTO user = (UserDTO)Session["current_user"]; 
       int id = user.ID; 
       string IPja = this.Request.ServerVariables["REMOTE_ADDR"]; 
       UserData.InitUserData(id, IPja); 
       Session["current_user"] = "NoUser"; 

       UserData.Logout(); 
       var jss = new JavaScriptSerializer(); 
       this.Response.Write(jss.Serialize(Session["current_user"])); 
       this.Response.ContentType = "application/json"; 
       this.Response.End(); 
       //TODO : LOGOUT 
      }