Я видел эту проблему в других сообщениях, но я считаю, что моя ситуация может быть другой.Мой код отлично работает на 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, отображаются нормально.
Мои вопросы: почему это работает локально, а не с веб-сервера?Как я могу исправить эту проблему (надеюсь), не переписывая всю схему аутентификации?
Спасибо.