Я только начал работать над функциями регистрации / входа в систему / выхода из системы нового веб-приложения с использованием Asp.Net Core 2.2.
Я удалил страницы Identity, просто для меня.Я не фанат этой новой методологии.
Код моей страницы генерирует ссылку для страницы регистрации, как, например,
<div class="text-right reg-button">
<a asp-area="Identity" asp-page="/Account/Register" class="submit">Register</a>
</div>
, это создает ссылку
<div class="text-right reg-button">
<a class="submit" href="/Identity/Account/Register">Register</a>
</div>
нажатие на эту ссылку приводит к ошибке
NullReferenceException: ссылка на объект не установлена для экземпляра объекта.
Ссылка выглядела правильно, поэтому я подозревал, что что-то не такс макетом, который он пытается использовать, поскольку это также является частью детализации ошибки.
NullReferenceException: ссылка на объект не установлена на экземпляр объекта.AspNetCore.Views_Shared__Layout_Industry.b__14_0 () в _Layout-Industry.cshtml + var controllerName = this.ViewContext.RouteData.Values ["controller"]. ToString ();
, поэтому я устанавливаю макет равным нулюнепосредственно на странице регистрации и на странице, отображаемой в ее основной форме.
Таким образом, вопрос становится двойным;
Почему макет, который я установил в Identity?Файл ViewStart разделов (макет, который я также установил в папке Views / Shared) не работает со всеми страницами удостоверений, но отлично работает на любой другой странице, кроме папки Areas?
Даже если я установлю полный путь к макету прямо в файле, он все равно завершится с той же ошибкой.Имя файла макетов - _Layout-Industry, но я заметил, что в деталях ошибки он отображается как _Layout_Industry. Этот дефис вызывает проблему?
Вот сайт, который был впервые открыт
Если вы нажмете кнопку «Регистрация / ссылка» в правом верхнем углу, откроется страница регистрации, но она не будет работать
Регистрацияpage - это страница регистрации по умолчанию, которая входит в веб-приложение по умолчанию, страница Layout - моя собственная, и она работает на всех 14 других страницах, которые НЕ находятся в области Identity, и находятся в стандартных подпапках Views
ОБНОВЛЕНИЕ:
У меня есть компонент вида, который загружает раздел метатега встраница.Вот код
@{
var controllerName = this.ViewContext.RouteData.Values["controller"]?.ToString();
var actionName = this.ViewContext.RouteData.Values["action"]?.ToString();
var userid = UserManager.GetUserId(User);
}
<!--Meta Tags- Using MetatagViewComponent-->
@if (controllerName != null && actionName != null)
{
@await Component.InvokeAsync("Metatag", new MetatagViewComponent.MetatagRequest { Controller = controllerName, Action = actionName })
}
Не удалось выполнить вызовы контроллера и действия, поскольку на страницах удостоверений нет контроллеров.Я сделал их обнуляемыми и обходил их, и теперь страница регистрации загружается.Есть ли способ получить имя представления со страниц идентификации, затем я могу получить метатеги, как и для всех других страниц.