Notices

Great community. Great ideas.

Welcome to ASP/Free, a community dedicated to helping beginners and professionals alike in improving their knowledge of Microsoft's development and administration technologies. Sign up today to gain access to the combined insight of tens of thousands of members.

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

Page 1 of 5 123 ... LastLast
Results 1 to 15 of 65
Share This Thread →
  1. #1
    Phoenix's Avatar
    Phoenix is offline Web-Standards Evangelist
    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)

  2. #2
    Shadow Wizard's Avatar
    Shadow Wizard is offline Moderator From Beyond
    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.

  3. #3
    Phoenix's Avatar
    Phoenix is offline Web-Standards Evangelist
    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

  4. #4
    Shadow Wizard's Avatar
    Shadow Wizard is offline Moderator From Beyond
    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.

  5. #5
    Phoenix's Avatar
    Phoenix is offline Web-Standards Evangelist
    Join Date
    Nov 2003
    Posts
    1,522
    Rep Power
    14
    patience David... patience, climb the ladder...

    today... sticky forum topics

    tomorrow... THE WORLD!! muwahahahahahhhaha!!!

  6. #6
    Damnrad24 is offline Registered User
    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.

  7. #7
    Shadow Wizard's Avatar
    Shadow Wizard is offline Moderator From Beyond
    Join Date
    Sep 2004
    Location
    Israel
    Posts
    31,126
    Rep Power
    2921
    Quote 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.

  8. #8
    Phoenix's Avatar
    Phoenix is offline Web-Standards Evangelist
    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.

  9. #9
    Shadow Wizard's Avatar
    Shadow Wizard is offline Moderator From Beyond
    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.

  10. #10
    Damnrad24 is offline Registered User
    Join Date
    Jan 2005
    Posts
    12
    Rep Power
    0

    Thanks

    Quote 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

  11. #11
    dotnetdev_03 is offline Registered User
    Join Date
    Feb 2004
    Posts
    24
    Rep Power
    0

    wow good Job!!!

    wonderful Job

  12. #12
    Timo is offline Timo
    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

  13. #13
    pebkac is offline Registered User
    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.

  14. #14
    morris_osu is offline Contributing User
    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.

  15. #15
    jmurrayhead is offline Moderator
    Join Date
    Feb 2004
    Location
    Reston, VA
    Posts
    13,248
    Rep Power
    1907
    Quote 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 ... LastLast
Share This Thread →

Become Part of This Conversation

Join NowFor Free!

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

ASP Free Advertisers and Affiliates