ExceptionHandlerMiddleware |发生未处理的异常:未将对象引用设置为对象的实例

时间:2018-09-12 23:29:34

标签: asp.net-mvc core

我在其他帖子中也看到了此问题,但我相信情况可能有所不同。我的代码在localhost上运行良好,但是在部署到Web服务器时出错。使用Asp.Net Core 2.0和SQL Server2012。我认为这与我的UserType类(Model.LoggedInUserType)有关:

public string GetUserType(string LoginID)
{
     string user = ClaimsPrincipal.Current.Identity.Name;

     Employee employee = db.tblEmployee.FirstOrDefault(e => (e.FirstName + '.' + e.LastName) == user);
     string userType = employee.UserType;

     return userType;
}

UserTypeViewModel.cs

public string LoggedInUserType = BaseInfoClass.UserType;

错误(来自日志):

  

2018-09-12   16:06:04.9272 | 2 | INFO | Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker |已执行   行动   ApostilleDNCv2.Controllers.TransactionController.UpdateTransaction   (ApostilleDNCv2)在906.2122毫秒2018-09-12   16:06:04.9272 | 3 | INFO | Microsoft.AspNetCore.Session.DistributedSession |会话已启动;密钥:68a158b8-c8bb-9d16-6e66-8c1a3942f3be,   id:9c7a85af-15d4-b8c1-1286-c0ca515cb1e2 2018-09-12   16:06:04.9433 ||错误| Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware |一个   发生未处理的异常:对象引用未设置为   对象的实例。 System.NullReferenceException:对象引用   未设置为对象的实例。在   AspNetCore._Views_Shared_Components_Apostille_default_cshtml.d__22.MoveNext()   在   C:\ TFS \ Corporation \ Development \ Src \ ApostilleDNCv2 \ ApostilleDNCv2 \ Views \ Shared \ Components \ Apostille \ default.cshtml:line   42   ---从上一个引发异常的位置开始的堆栈跟踪---

查看(UpdateTransactionPost.cshtml)代码:

<div class="col-lg-offset-2">
        @await Component.InvokeAsync("Apostille", new { tid = Model.Trans.TransactionID })
</div>
<div class="col-lg-offset-2">
        @await Component.InvokeAsync("Certificate", new { tid = Model.Trans.TransactionID })
</div>

查看组件(Shared \ Components \ Apostille \ default.cshtml-第42行):

<th class="txtctr" style="@(Model.LoggedInUserType.ToString() != "ADM" ? "display:none" : "" )">
                    @Html.DisplayName("Delete")
</th>

样式引用的目的是使删除(和某些其他功能)仅对管理员可见/可用。

此网页显示400错误。其他不依赖UserType的页面也可以正常显示。

我的问题:为什么这在本地而不是在Web服务器上起作用?我该如何纠正此问题(希望)而不必重写整个身份验证方案?

谢谢。

0 个答案:

没有答案