Avatar billede joki Juniormester
26. februar 2012 - 17:47 Der er 5 kommentarer og
1 løsning

ASP WEB C# NullReferenceException Object reference not set to an instance of an object.

Hej

Jeg har et nedenstående, som fungere ok lokalt, men ikke hos host
Jeg håber der er en som kan gennemskue hvad der går galt har nu brugt et par dage på det :-(


[NullReferenceException: Object reference not set to an instance of an object.]
  Paint.EnduserAccess.EndusersTasksModel.CreateEndusersTasksList() in C:\Documents and Settings\Admin\dokumenter\visual studio 2010\Projects\Paint\Paint\Model\EndusersTasksModel.cs:72
  Paint.EnduserAccess.EndusersTasksController.GetUsersTaskList(String enduser) in C:\Documents and Settings\Admin\dokumenter\visual studio 2010\Projects\Paint\Paint\Controllers\EndusersTasksController.cs:29
  Paint.EnduserAccess.EndusersTasks.BindGridview() in C:\Documents and Settings\Admin\dokumenter\visual studio 2010\Projects\Paint\Paint\EnduserAccess\EndusersTasks.aspx.cs:32
  Paint.EnduserAccess.EndusersTasks.Page_Load(Object sender, EventArgs e) in C:\Documents and Settings\Admin\dokumenter\visual studio 2010\Projects\Paint\Paint\EnduserAccess\EndusersTasks.aspx.cs:18
  System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
  System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
  System.Web.UI.Control.OnLoad(EventArgs e) +91
  System.Web.UI.Control.LoadRecursive() +74
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207


EndusersTasksModel :

    public List<User> CreateEndusersTasksList()
        {
         
                User tempUser = new User();
                List<User> userList = new List<User>();
                UserFactory enduserFactory = new UserFactory();
                TaskFactory enduserTaskFactory = new TaskFactory();
                    MySqlDataReader dataReader = this.enduserlistdr;
                    Task tempTask = new Task();
                    UserAccount tempUserAccount = new UserAccount();
                    int enduserId = 0;
                    int taskId;
                    string expectedPrice="";
                    string description = "";
                    int placeAsUser;
                    int rate;
                    string rateDescription = "";
                    int taskType;
                    int workDoneByUserId = 0;
                    DateTime createdDate = new DateTime();
                    int purchasedQty;

                 
                        while (dataReader.Read())
                        {
                            tempUser = enduserFactory.CreateUser(0, "", "", "", "", 0, 0, "", 0, tempTask, tempUserAccount);


                            taskId = (int)dataReader["taskid"];
                            enduserId = (int)dataReader["createdbyid"];
                            description = (string)dataReader["description"];
                            expectedPrice = (string)dataReader["expectedprice"];
                            placeAsUser = Convert.ToInt16(dataReader["placeasuser"]);
                            rate = Convert.ToInt16(dataReader["rate"]);
                            rateDescription = (string)dataReader["ratedescription"];
                            taskType = Convert.ToInt16(dataReader["tasktype"]);
                            createdDate = (DateTime)dataReader["createdate"];
                            purchasedQty = Convert.ToInt16(dataReader["purchased_qty"]);

                            tempTask = enduserTaskFactory.CreateTask(taskId, 0, expectedPrice, 0, description, placeAsUser, rate, rateDescription, taskType, createdDate, workDoneByUserId, purchasedQty, 0);
                            tempUser.UserTask = tempTask;
                            userList.Add(tempUser);

                        }

                   

                return userList;
            }

Code behind :

    private void BindGridview()
        {

            MembershipUser currentUser;
            string username="";
            currentUser = Membership.GetUser();
            username = currentUser.UserName;
           
            List<User> userList = new List<User>();
            userList = this.controller.GetUsersTaskList(username);
            this.GridView1.DataSource = userList;
            this.GridView1.DataBind();
     
        }
Avatar billede Slettet bruger
26. februar 2012 - 19:05 #1
Fejlen sker på linje 72 i EndusersTasksModel.cs. Da du ikke har vist filens indhold i sin fulde længde, kan du fortælle hvilken kodestump der ligger der?
Avatar billede joki Juniormester
26. februar 2012 - 19:46 #2
Linie 72 er
  description = (string)dataReader["description"];
Avatar billede Slettet bruger
26. februar 2012 - 20:11 #3
Jeg kan ikke se hvorfor du skulle få en NullReferenceException der. Hvis dataReader var null, ville du have fået fejlen før. Hvis description var NULL i databasen ville dataReader["description"] returnere DBNull.Value, og du ville få en InvalidCastException i stedet.
En NullReferenceException får du f.eks. når du har en variabel der er null og hvor du prøver at kalde en metode på den.
Avatar billede Slettet bruger
26. februar 2012 - 20:15 #4
Du kunne også have fået en IndexOutOfRangeException hvis "description" ikke var en nøgle i din dataReader, men stadig ikke en NullReferenceException.
Avatar billede joki Juniormester
27. februar 2012 - 07:44 #5
ok, jeg må lede lidt videre. Synes bare det er underligt at alt fungere lokalt, men ikke hos host
Avatar billede joki Juniormester
19. juli 2012 - 12:46 #6
Lukkes
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester