空指针异常我无法解析

时间:2014-01-06 15:51:39

标签: c# asp.net .net asp.net-mvc

在我的一个ASP.NET MVC网站上,我偶尔会在生产中获得NPE,因为我无法理解根本原因。我正在使用ELMAH来跟踪错误。

完整的堆栈跟踪在这里(对它来说并不多:

System.NullReferenceException: Object reference not set to an instance of an object.
   at PG.Controllers.FooController.FooActionName(FooModel model) in     
{REMOVED}\web\www\Controllers\FooController.cs:line 622

这是第622行:

if(UserCanEditFoo(out result))

这是“UserCanEditFoo列表:

private bool UserCanEditFoo(out ActionResult result)
{
    String     email = User != null && User.Identity != null ? User.Identity.Name : String.Empty;
    UserAccount user = String.IsNullOrEmpty(email) ? null : this.accountServices.GetUserAccount(email);
    bool  canEditFoo = false;

        result = null;

        //  Don't know this user
        if(user == null)
        {
            FormsAuthentication.SignOut();
            Session.Abandon();
            result = RedirectToAction(Routes.Actions.Index, Routes.Controllers.Home);
        }

        //  Only admins and foo profile can edit foo
        else if(user.Role != Types.UserRole.Admin && user.Role != Types.UserRole.Foo)
        {
            result = new HttpUnauthorizedResult("Oops! Only administrators and foo users can edit foo.");
        }

        else
        {
            result = null;
            canEditFoo = true;
        }

        return canEditFoo;
    }

我假设在“UserCanEditFoo”私有方法中实际引发了异常,但我不明白为什么不报告行号。另一方面,如果在第622行真正提出异常,我不明白如何进行这是一个简单的函数调用。

任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:0)

假设this.accountServices不能为空,您的代码对我来说很好,所以我建议异常实际发生在其他地方(可能是由于内联)。

有关在发布模式下显示正确行号的详细信息,请查看this question