ExceptionHandlerMiddleware | Произошло необработанное исключение: ссылка на объект не установлена ​​для экземпляра объекта - PullRequest
0 голосов
/ 13 сентября 2018

Я видел эту проблему в других сообщениях, но я считаю, что моя ситуация может быть другой.Мой код отлично работает на localhost, но выдает ошибки при развертывании на веб-сервере.Использование Asp.Net Core 2.0 и SQL Server 2012. Я считаю, что это связано с моим 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.2122ms 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 || ОШИБКА |: В экземпляре объекта не задана ссылка на объект.System.NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта.в AspNetCore._Views_Shared_Components_Apostille_default_cshtml.d__22.MoveNext () в C: \ TFS \ Corporations \ Development \ Src \ ApostilleDNCv2 \ ApostilleDNCv2 \ Views \ Shared \ Components \ расположение апостиля \ строки трассировки 42 из файла default.cshгде было сгенерировано исключение ---

Просмотреть (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, отображаются нормально.

Мои вопросы: почему это работает локально, а не с веб-сервера?Как я могу исправить эту проблему (надеюсь), не переписывая всю схему аутентификации?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...