标签: nullreferenceexception

VS2012:属性页未打开:对象引用未设置为对象的实例

我使用的是Visual Studio Premium 2012,版本11.0.50727.1 RTMREL,Windows 7 Enterprise(SP1).

当我右键单击解决方案,然后单击属性时,我会看到一个弹出窗口,显示空引用异常(对象引用未设置为对象的实例).

当我在2010年尝试相同时,它工作正常,打开正常的解决方案属性页面,允许我设置启动顺序等.

此外,在2012年,View - > Property Pages也给出了相同的结果.

请告知如何解决这个问题,这是一个已知的bug吗?

更新1:尝试运行devenv /resetsettings以及devenv /safemode问题仍然存在.还尝试了一个新的解决方案,问题仍然存在.

更新2:似乎禁用任何扩展,并再次尝试,排除问题.重新启用扩展不会带来错误.

更新3:如果您仍然遇到此问题,请在此处投票:https://connect.microsoft.com/VisualStudio/feedback/details/763961/cannot-open-property-pages-for-solution

projects-and-solutions nullreferenceexception visual-studio-2012

21
推荐指数
1
解决办法
1万
查看次数

堆栈跟踪如何指向错误的行("返回"语句) - 40行关闭

我有两次现在看到NullReferenceException从生产ASP.NET MVC 4 Web应用程序登录 - 并登录错误的行.没有错误的一两行(就像你会得到PDB不匹配),但错误的是整个控制器动作的长度.例:

public ActionResult Index()
{
    var someObject = GetObjectFromService();
    if (someObject.SomeProperty == "X") { // NullReferenceException here if someObject == null
        // do something
    }

    // about 40 more lines of code

    return View();    // Stack trace shows NullReferenceException here
}
Run Code Online (Sandbox Code Playgroud)

对于同一控制器上的操作,这发生了两次.第二个案例已登录

// someObject is known non-null because of earlier dereferences
return someObject.OtherProperty
    ? RedirecToAction("ViewName", "ControllerName")
    : RedirectToAction("OtherView", "OtherController");
Run Code Online (Sandbox Code Playgroud)

这非常令人不安.NullReferenceException一旦你知道它发生了什么线,就很容易修复.如果异常可能发生在控制器动作中的任何地方,那就不那么容易了!

有没有人见过这样的东西,无论是在ASP.NET MVC还是其他地方?我愿意相信它是Release版本和Debug版本之间的区别,但仍然需要关闭40行?


编辑:

要明确:我是" 什么是NullReferenceException以及如何修复它? " 的原始作者.我知道它NullReferenceException是什么.这个问题是关于为什么堆栈跟踪如此偏离.我已经看到由于PDB不匹配导致堆栈跟踪被一行或两行关闭的情况.我见过没有PDB的情况,所以你没有得到行号.但我从未见过堆栈跟踪被32行关闭的情况. …

c# asp.net asp.net-mvc nullreferenceexception asp.net-mvc-4

20
推荐指数
2
解决办法
3697
查看次数

空字段上的GetHashCode?

我如何处理GetHashCode函数中的空字段?

Module Module1
  Sub Main()
    Dim c As New Contact
    Dim hash = c.GetHashCode
  End Sub

  Public Class Contact : Implements IEquatable(Of Contact)
    Public Name As String
    Public Address As String

    Public Overloads Function Equals(ByVal other As Contact) As Boolean _
        Implements System.IEquatable(Of Contact).Equals
      Return Name = other.Name AndAlso Address = other.Address
    End Function

    Public Overrides Function Equals(ByVal obj As Object) As Boolean
      If ReferenceEquals(Me, obj) Then Return True

      If TypeOf obj Is Contact Then
        Return Equals(DirectCast(obj, Contact)) …
Run Code Online (Sandbox Code Playgroud)

null equality iequatable gethashcode nullreferenceexception

19
推荐指数
2
解决办法
1万
查看次数

Sum()导致异常,而不是在没有行时返回0

我有这个代码(好吧,我没有,但类似的东西:p)

    var dogs = Dogs.Select(ø => new Row
    {
            Name = ø.Name,
            WeightOfNiceCats = ø.Owner
              .Cats
              .Where(æ => !æ.Annoying)
              .Sum(æ => æ.Weight),
    });
Run Code Online (Sandbox Code Playgroud)

在这里,我通过所有的狗,并总结所有不讨厌的猫的重量(进入一个不可空的小数),与猫拥有相同的所有者.当然,几乎所有的猫都很烦,所以我得到这个错误:

无法将null值分配给类型为System.Decimal的成员,该成员是非可空值类型.

使用的字段或外键都不能为空.因此,当Where子句没有返回猫时会发生错误,而这通常会发生.但是我该如何解决这个问题呢?当发生这种情况时,我希望它返回0.试过DefaultIfEmpty()后面的Where条款,但后来我得到这个错误:

你调用的对象是空的.

我猜这是可以理解的.我试图添加一个??Sum,但由于这个错误它不会编译:

接线员'??' 不能应用于'decimal'和'decimal'类型的操作数

这当然也是有道理的.那我该怎么办?如果Sum事情只是在没有任何要求的情况下返回0 就会很好.或某种SumOrZero声明.制作一个适用SumOrZero于Linq2SQL 的方法会不会很难?

c# nullreferenceexception linq-to-sql

18
推荐指数
2
解决办法
6040
查看次数

使用UrlHelper.Action方法生成URL时出现空引用异常

出于某种原因,当某些机器人访问该站点时,使用该UrlHelper.Action方法生成一个url 会引发一个null异常System.Web.HttpServerVarsCollection.Get.我做了一些调试,调用堆栈起源于尝试从HttpContextBase.Request.ServerVariables集合中获取'HTTP_X_ORIGINAL_URL' .

如果我直接从浏览器访问同一个地址 - 没问题.该页面是服务器,不记录任何错误.它似乎只发生在机器人访问时.

不确定它是否相关,但该网站刚刚迁移到IIS 7.5.仍在集成模式下使用.NET 2.0.

通过Reflector查看反转的代码,在Get方法中可以直接发生null异常的唯一地方是调用this._request.FetchServerVariables.好像没有正确设置完整的请求.

有没有其他人遇到这个问题或发现了一个解决方法?为什么在机器人访问时请求的设置不同?

更新:一些额外的调试表明HttpServerVarsCollection是Disposed,以及它的父HttpRequest对象.现在的问题是 - 如何在请求完成之前公开HttpContext.Current返回的Request对象?

HttpServerVarsCollection.Get方法

public override string Get(string name)
{
    if (!this._populated)
    {
        string simpleServerVar = this.GetSimpleServerVar(name);
        if (simpleServerVar != null)
        {
            return simpleServerVar;
        }
        this.Populate();
    }
    if (this._iis7workerRequest == null)
    {
        return this.GetServerVar(base.BaseGet(name));
    }
    string serverVar = this.GetServerVar(base.BaseGet(name));
    if (string.IsNullOrEmpty(serverVar))
    {
        // Only place null reference can happen
        serverVar = this._request.FetchServerVariable(name);
    }
    return serverVar;
}
Run Code Online (Sandbox Code Playgroud)

完整堆栈跟踪

NullReferenceException: …
Run Code Online (Sandbox Code Playgroud)

.net nullreferenceexception asp.net-mvc-2

17
推荐指数
1
解决办法
4329
查看次数

在Page_Load中,ASPNET WebForms Server Control为NULL

我有一个非常奇怪的情况,我的Label控件在Page_Load中为NULL.它应该可能吗?

我有一个Web表单:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="MyNamespace.Templates.Pages.WebForm1" %>
<%@ Register TagPrefix="cw" Namespace="MyNamespace.Templates.Units" Assembly="MyNamespace" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div style="background-color:yellowgreen;">
        FIRST
    </div>
    <div style="background-color: wheat;">
        SECOND
        <cw:ArticleColumn runat="server" ID="ac" ArticleID="1899"/>
    </div>
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在Web表单的Page_Load中,我只是做了一个

if(!IsPostBack) DataBind();
Run Code Online (Sandbox Code Playgroud)

用户控件ArticleColumn如下所示:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ArticleColumn.ascx.cs"  Inherits="MyNamespace.Templates.Units.ArticleColumn" %>
<h2><asp:Label runat="server" ID="myArticleHeading" Text="TOM" /></h2>
<p><asp:Label runat="server" ID="myArticleIntro" Text="TOM" /></p>
<asp:Label runat="server" ID="myArticleBody" Text="TOM" />
Run Code Online (Sandbox Code Playgroud)

后面的代码看起来像这样:

public partial class ArticleColumn …
Run Code Online (Sandbox Code Playgroud)

asp.net webforms nullreferenceexception

17
推荐指数
1
解决办法
6071
查看次数

为什么ResourceManager.GetResourceSet在构建后的第一个请求上返回null?(C#)

我正在研究一个用C#(asp.net)构建的大型Web应用程序.我有一个简单的aspx页面,它为客户端浏览器提供本地化字符串,以便在javascript控件中使用.为了获得字符串,我执行以下操作:

ResourceManager _resources = new ResourceManager(_pathname, typeof(ARM).Assembly);
ResourceSet rs = _resources.GetResourceSet(culture, false, false);

//loop through rs and write the keys & values out to the client in plaintext
Run Code Online (Sandbox Code Playgroud)

这一切都正常,除了在Clean/Build或Rebuild之后立即对页面的第一个请求(如果我只是进行一些更改,然后Build,它工作正常).所以在第一个请求时,当我尝试迭代ResourceSet时,我得到一个空引用异常.但是,如果我在错误之后刷新页面,那么从那时起它就能正常工作.

有谁知道为什么会发生这种情况?

c# asp.net resourcemanager nullreferenceexception

16
推荐指数
1
解决办法
8196
查看次数

如果null.Equals(null)为什么我会得到NullReferenceException

我有以下代码行:

var selectedDomainID = lkuDomainType.EditValue.Equals(null) 
    ? string.Empty 
    : lkuDomainType.EditValue;
Run Code Online (Sandbox Code Playgroud)

有时会产生一个NullReferenceException.我不明白的是为什么.是不是要检查我的代码的全部要点,null如果是这样的话string.empty?当我检查DEBUG时,它说明EditValue == null了我错过了什么?

c# null nullreferenceexception

16
推荐指数
3
解决办法
2万
查看次数

带有空条件运算符和等待的C#错误

我在C#中使用新的空条件运算符时遇到了一个有趣的System.NullReferenceException.如果"MyObject"为null,则以下代码为我提供NullReferenceException:

await this.MyObject?.MyMethod()
Run Code Online (Sandbox Code Playgroud)

我希望如果"MyObject"为空,或者我误解了空条件运算符的用途,就不会调用"MyMethod"?

c# nullreferenceexception null-conditional-operator

16
推荐指数
2
解决办法
1554
查看次数

将null值转换为类型

我有一个简单的问题.如果我们将一些null变量转换为一个类型.我希望编译器抛出一些异常,但事实并非如此.我真的想知道原因.我的意思是

string sample1 = null as string;
string sample2 = (string)null;


object t1 = null;
TestClass t2 = (TestClass)t1; 
Run Code Online (Sandbox Code Playgroud)

可能在第一个,因为操作员处理异常处理.但其他样本必须抛出异常.编译器如何处理这些情况,可能因为变量为null,它不执行强制转换操作?因为如果它真的抛出空指针它必定是一个错误.

c# null casting compiler-errors nullreferenceexception

16
推荐指数
1
解决办法
1万
查看次数