Page 1 of 5 123 ... Last
  • Jump to page:
    #1
  1. Web-Standards Evangelist
    ASP Skiller (1500 - 1999 posts)

    Join Date
    Nov 2003
    Posts
    1,522
    Rep Power
    14

    Common causes of: Object reference not set to an instance of an object error


    (mods, you might want to make this a sticky)

    Considering the large number of "Object reference not set to an instance of an object" errors abound, I figured its my "public duty" to give the main reasons, and thus... reduce the number of superflous threads created on the matter:

    Cause one:

    Not declaring variables!

    Yes, I know it sounds obvious, but MAKE SURE that you've explicity declared the variable, and don't forget to use the appropriate scope!

    One common mistayke is when working with Codebehind Classes, consider:

    XHTML / Tags:
    Code:
     
    <body>
    <asp:Literal id="litOne" runat="server" />
    </body>
    ASP.Net Codebehind Class
    Code:
    Public Class PageOne
    Inherits System.Web.UI.Page
     
    Dim strHello As String
     
    Sub Page_Load(ByVal e As System.EventArgs) Handles MyBase.Load
    	strHello = "Hello!"
    	litOne.Text = strHello
    End Sub
     
    End Class
    Remember! Codebehinds arn't handled the same way as inline/<script> pages!

    You need to declare EVERY control you want to interact with in the codebehind class

    ...Do this just after the Inherits statement:

    Code:
    Public Class PageOne
    Inherits System.Web.UI.Page
     
    Protected WithEvents litOne As System.Web.UI.WebControls.Literal
     
    ...
    Personally, I use "Protected WithEvents" as its the most flexible and "protects" the object, feel free to use other scopes and attributes as you see fit.

    Cause 2: Bad scoping!

    Indeed...

    One common cause is this:
    Code:
    Sub Page_Load(ByVal e As System.EventArgs) Handles MyBase.Load
     
    	Private strHello As String
     
    End Sub
     
    Sub Button1_Click(ByVal e As System.EventArgs) Handles Button1.Click
     
    	strHello = "Hello!"
     
    End Sub
    This won't work because strHello is accessible only by Sub Page_Load

    Bad inits/constructs
    Remember, some classes have constuctors

    Consider DirectoryInfo:

    Code:
    Sub Page_Load() ....
     
    Dim dirInfo As System.IO.DirectoryInfo
     
    dirInfo.GetDirectory("C:\")
     
    End Sub
    In the above example, we've only defined dirInfo *AS* a DirectoryInfo class, we haven't actually created it

    So we need to do this instead:

    Code:
    Sub Page_Load() ....
     
    Dim dirInfo As System.IO.DirectoryInfo
     
    dirInfo = New System.IO.DirectoryInfo("C:\")
     
    End Sub
    That should do it....

    Remember, ALWAYS refer to the MSDN Library when enquiring about classes and their initilisation (sp?) methods.... why trust some "1337 script kiddie!" site when you've got the official reference at http://www.msdn.com ? Or better yet, get the compiled version on CD, don't need to worry about long download times or the constant "was this article of any use to you?" screen.

    HTH
    -1337_d00d

    (and yes, I'm aware of the "mistayke" thing, it was supposed to be ironic, but clearly the humour is lost on you)

    Comments on this post

    • BigGwyn agrees
    • medialint agrees
  2. #2
  3. Moderator From Beyond
    ASP Mastermind (5000+ posts)

    Join Date
    Sep 2004
    Location
    Israel
    Posts
    31,126
    Rep Power
    2921

    Thumbs up


    very nice job, dude... I see you really got into it, eh?
    we already have about 5 stickies in this forum, I'll consult with the others moderators and we'll see if there is room for another one... this might as well be attached to existing sticky tutorial.
    anyways, thanks - this would probably going to be very useful information.
  4. #3
  5. Web-Standards Evangelist
    ASP Skiller (1500 - 1999 posts)

    Join Date
    Nov 2003
    Posts
    1,522
    Rep Power
    14
    "Just doing my part"

    ...I figured I needed to get back into the mod's good books after flaming all the newbs for a while last week
  6. #4
  7. Moderator From Beyond
    ASP Mastermind (5000+ posts)

    Join Date
    Sep 2004
    Location
    Israel
    Posts
    31,126
    Rep Power
    2921
    lol
    you didn't flame anyone, and even if you did it was justified as they had non standard code! *shudder*
    well, as you see this thread has been stuck already, now let's hope ppl will read it before posting problems of that kind.
  8. #5
  9. Web-Standards Evangelist
    ASP Skiller (1500 - 1999 posts)

    Join Date
    Nov 2003
    Posts
    1,522
    Rep Power
    14
    patience David... patience, climb the ladder...

    today... sticky forum topics

    tomorrow... THE WORLD!! muwahahahahahhhaha!!!
  10. #6
  11. No Profile Picture
    Registered User
    ASP Explorer (0 - 99 posts)

    Join Date
    Jan 2005
    Posts
    12
    Rep Power
    0

    Your a pro


    Yo dude

    You'll probably want to shoot me, but I have this exact error you so passionately talk
    about. I have read through your posting but it still hasn't helped me and wonder
    if you would mind having a look see. I'm quite a novice in .net but have the coding backround just
    need a slight hand.

    thanks in advance.
  12. #7
  13. Moderator From Beyond
    ASP Mastermind (5000+ posts)

    Join Date
    Sep 2004
    Location
    Israel
    Posts
    31,126
    Rep Power
    2921
    Originally Posted by Damnrad24
    Yo dude

    You'll probably want to shoot me, but I have this exact error you so passionately talk
    about. I have read through your posting but it still hasn't helped me and wonder
    if you would mind having a look see. I'm quite a novice in .net but have the coding backround just
    need a slight hand.

    thanks in advance.
    post your problem as new thread and we will see if we can help. in your post, give full details aboout what exactly is wrong, along with relevant code causing errors.
  14. #8
  15. Web-Standards Evangelist
    ASP Skiller (1500 - 1999 posts)

    Join Date
    Nov 2003
    Posts
    1,522
    Rep Power
    14
    I've been having a few different causes of the error recently too, so here's an ammendum:

    Not "IDing" user controls!

    Consider:

    XHTML
    Code:
    <body>
    <MyPrefix:MyControl runat="server" />
    </body>
    ASP.Net
    Code:
     
    Protected MyControl As MyNamespace.MySite.MyControl
     
    Sub Page_Load() Handles MyBase.Load
    MyControl.MyProperty = MyValue
    End Sub
    ...won't work

    You need to declare the ID="" attribute:

    XHTML
    Code:
    <body>
    <MyPrefix:MyControl id="MyControl" runat="server" />
    </body>
    HTH
    Last edited by 1337_d00d; January 31st, 2005 at 05:29 AM.
  16. #9
  17. Moderator From Beyond
    ASP Mastermind (5000+ posts)

    Join Date
    Sep 2004
    Location
    Israel
    Posts
    31,126
    Rep Power
    2921
    Show us your code and I'll take a look (paste it here, I'm sure the mods won't mind... and even then, you can delete it when you're done)
    nope, not good idea. this thread is tutorial, it's pointless to make it something else. new problem deserve to be in its own thread.
  18. #10
  19. No Profile Picture
    Registered User
    ASP Explorer (0 - 99 posts)

    Join Date
    Jan 2005
    Posts
    12
    Rep Power
    0

    Thanks


    Originally Posted by Shadow Wizard
    post your problem as new thread and we will see if we can help. in your post, give full details aboout what exactly is wrong, along with relevant code causing errors.
    Will post as a new thread, Look forward to the response! Thank again
  20. #11
  21. No Profile Picture
    Registered User
    ASP Explorer (0 - 99 posts)

    Join Date
    Feb 2004
    Posts
    24
    Rep Power
    0

    wow good Job!!!


    wonderful Job
  22. #12
  23. No Profile Picture
    Timo
    ASP Discoverer (100 - 499 posts)

    Join Date
    Sep 2004
    Location
    Perth, Australia
    Posts
    106
    Rep Power
    10
    Phoenix,

    I am truly gratefull for this sticky. I suffered from a cause 3(bad init) for two days before you and your post rescued me. I should have known better. Thanks for getting me out of that mess!

    Cheers,
    Timo
  24. #13
  25. No Profile Picture
    Registered User
    ASP Explorer (0 - 99 posts)

    Join Date
    Mar 2007
    Posts
    1
    Rep Power
    0
    There is another possible solution. I knew there had to be because I had my application working on other computers, but one of them gave me this error (Windows XP).

    If you had previously gotten this error:

    "Failed to access IIS metabase"

    and fixed it with (at the command prompt)

    aspnet_regiis -ga IUSR_<computername>
    aspnet_regiis -ga IWAM_<computername>

    .. and subsequently you get the "Object reference ..." error

    then the fix is to run (at the command prompt)

    aspnet_regiis -i

    I don't know why this problem only occurred on one of my machines. Anyway it seems to be a common problem so I thought I'd post my solution as an alternative. I hope it helps someone.

    Comments on this post

    • Shadow Wizard agrees : thanks for sharing and welcome to the forum. :)
  26. #14
  27. No Profile Picture
    Contributing User
    ASP Explorer (0 - 99 posts)

    Join Date
    Jul 2006
    Posts
    41
    Rep Power
    8
    Personally, I get this error most often when I'm trying to reference a "buried" control within my codebehind.

    For example...

    .aspx:
    Code:
        <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
                <asp:Label ID="testID" runat="server" />
            </ItemTemplate>
        </asp:Repeater>
    .aspx.cs
    Code:
        protected void Page_Load(object sender, EventArgs e)
        {
            testID.Text = "this won't work";
        }
    Pretty sure this is relevant.
  28. #15
  29. No Profile Picture
    Moderator
    ASP Mastermind (5000+ posts)

    Join Date
    Feb 2004
    Location
    Reston, VA
    Posts
    13,248
    Rep Power
    1907
    Originally Posted by morris_osu
    Personally, I get this error most often when I'm trying to reference a "buried" control within my codebehind.

    For example...

    .aspx:
    Code:
        <asp:Repeater ID="Repeater1" runat="server">
            <ItemTemplate>
                <asp:Label ID="testID" runat="server" />
            </ItemTemplate>
        </asp:Repeater>
    .aspx.cs
    Code:
        protected void Page_Load(object sender, EventArgs e)
        {
            testID.Text = "this won't work";
        }
    Pretty sure this is relevant.
    Just to add to the above, to reference the "buried" control do such:

    vb.net Code:
     
        Private Sub Page_Load(sender As Object, e As EventArgs)
            Dim testIDtxt As TextBox
            testIDtxt = Repeater1.Controls.(0).FindControl("testID")
            testIDtxt.Text = "this WILL work"
        End Sub


    Written in VB, but same concept.
    jmurrayhead
Page 1 of 5 123 ... Last
  • Jump to page:

Similar Threads

  1. error: object reference not set to an instance of an object
    By aliaga61 in forum .NET Development
    Replies: 4
    Last Post: January 11th, 2005, 11:25 AM
  2. Replies: 0
    Last Post: August 20th, 2004, 07:18 AM
  3. Error: Object reference not set to an instance of an object.
    By zappa_justin in forum .NET Development
    Replies: 6
    Last Post: July 30th, 2004, 01:39 PM
  4. Error - Object reference not set to an instance of an object
    By ajegopinath in forum .NET Development
    Replies: 0
    Last Post: April 27th, 2004, 11:28 PM
  5. Replies: 8
    Last Post: December 28th, 2003, 11:17 PM

IMN logo majestic logo threadwatch logo seochat tools logo