升级到4.0后VB.NET中的NullReferenceException

时间:2011-07-25 14:54:01

标签: vb.net .net-4.0 nullreferenceexception

我有一个刚刚升级的VB.NET解决方案。它最初是在.NET 1.1中,我升级到.NET 2.0并验证它将构建并正确运行。然后我从2.0升级到4.0。它仍在构建中没有错误,但是当我尝试运行时,我在NullReferenceException中获得了Global.asax.vb。真正奇怪的是,抛出异常的那条线就是:

Dim dt As System.Data.DataTable

我不是试图使用变量,只是声明它。进一步向下调用Function,返回DataTable并设置变量,但我甚至没有到达那一行。它会在NullReferenceException行上抛出Dim。以前有人碰过这个吗?这是升级的一些问题吗?

修改

好的,这是函数中的第一行。周围的代码看起来像这样。

Private Function GetUserRoles() As String    
    Dim dt As System.Data.DataTable
    Dim oDBLookup As New DBLookups

我将其更新为此,这应该没有区别。

Private Function GetUserRoles() As String
    Dim oDBLookup As New DBLookups
    Dim dt As System.Data.DataTable

现在,NullReferenceException正在函数的新第一行发生。

    Dim oDBLookup As New DBLookups

GetUserRoles()函数是Application_AuthenticateRequest中的第一行,它不是Dim或If语句。

Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
    ' Fires upon attempting to authenticate the user
    Dim authCookie As HttpCookie = Context.Request.Cookies("GROUPCOOKIES")
    Dim Groups As String
    Dim noGroups As Boolean = False
    If authCookie Is Nothing Then
        Groups = GetUserRoles()

我在发布前做了重建解决方案。这是一个Web应用程序,我在bin文件夹中看到的唯一文件是我引用的dll文件。我不确定还应该清理什么。

1 个答案:

答案 0 :(得分:1)

听起来这个解决方案可能没有正确重建,并且似乎在那里抛出异常,即使它实际上发生在其他地方,因为源与调试符号不同。尝试清理解决方案,手动删除所有bin和obj目录,然后重建并重新运行。