我使用的是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
我有两次现在看到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行关闭的情况. …
我如何处理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) 我有这个代码(好吧,我没有,但类似的东西: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 的方法会不会很难?
出于某种原因,当某些机器人访问该站点时,使用该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) 我有一个非常奇怪的情况,我的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) 我正在研究一个用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时,我得到一个空引用异常.但是,如果我在错误之后刷新页面,那么从那时起它就能正常工作.
有谁知道为什么会发生这种情况?
我有以下代码行:
var selectedDomainID = lkuDomainType.EditValue.Equals(null)
? string.Empty
: lkuDomainType.EditValue;
Run Code Online (Sandbox Code Playgroud)
有时会产生一个NullReferenceException.我不明白的是为什么.是不是要检查我的代码的全部要点,null如果是这样的话string.empty?当我检查DEBUG时,它说明EditValue == null了我错过了什么?
我在C#中使用新的空条件运算符时遇到了一个有趣的System.NullReferenceException.如果"MyObject"为null,则以下代码为我提供NullReferenceException:
await this.MyObject?.MyMethod()
Run Code Online (Sandbox Code Playgroud)
我希望如果"MyObject"为空,或者我误解了空条件运算符的用途,就不会调用"MyMethod"?
我有一个简单的问题.如果我们将一些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# ×6
asp.net ×3
null ×3
.net ×1
asp.net-mvc ×1
casting ×1
equality ×1
gethashcode ×1
iequatable ×1
linq-to-sql ×1
webforms ×1