MissingMethodException: невозможно динамически создать экземпляр типа с помощью Blazor и внедрения зависимостей. ⇐ C#
MissingMethodException: невозможно динамически создать экземпляр типа с помощью Blazor и внедрения зависимостей.
Я столкнулся с «MissingMethodException» MissingMethodException: невозможно динамически создать экземпляр типа «Blazor.Pages.Account.Register». Причина: в моем серверном приложении Blazor не определен конструктор без параметров при попытке использовать внедрение зависимостей с конструктором без параметров. Вот что я пробовал на данный момент:
Я создал UserService.cs
с использованием Blazor.API.Model; пространство имен Blazor.Services { публичный класс UserService { частный HttpClient только для чтения _httpClient; общественный UserService (HttpClient httpClient) { _httpClient = httpClient; } общедоступная асинхронная задача RegisterAsync (RegisterModel RegisterModel) { пытаться { вар ответ = ждут _httpClient.PostAsJsonAsync("/register", RegisterModel); если (ответ.IsSuccessStatusCode) { вернуть истину; } еще { вернуть ложь; } } ловить { вернуть ложь; } } } } Я обновил файл program.cs
var builder = WebApplication.CreateBuilder(args); // Добавляем сервисы в контейнер. builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); builder.Services.AddScoped(s => { вар httpClient = новый HttpClient { BaseAddress = новый Uri(builder.Configuration.GetSection("ApiBaseUrl").Value) }; вернуть httpClient; }); builder.Services.AddHttpClient(); builder.Services.AddScoped(); вар приложение = builder.Build(); Также я получаю сообщение об ошибке «Предупреждение CS8604. Возможен нулевой ссылочный аргумент для параметра 'uriString' в 'Uri.Uri(string uriString)'» при наведении указателя мыши на builder.Configuration.GetSection( "ApiBaseUrl").Value
и Мой регистр.razor.cs
с использованием Blazor.API.Model; использование Blazor.Services; пространство имен Blazor.Pages.Account { Регистр публичного частичного класса { частный UserService UserService {получить; набор; } частный bool isRegistering = ложь; частная регистрация boolSuccessful = false; частная RegisterModel RegisterModel = новая RegisterModel (); общедоступный реестр (UserService userService) { ПользовательскаяСервис = ПользовательскаяСервис; } частный асинхронный дескриптор задачи HandleValidSubmit() { // Начинаем процесс регистрации isRegistering = правда; //отправляем запрос на регистрацию на сервер bool RegistrationResult = ждут UserService.RegisterAsync(registerModel); // Обновляем состояние регистрации RegistrationSuccessful = RegistrationResult; // Остановить процесс регистрации isRegistering = ложь; } } } Однако при переходе к этому компоненту Register я получаю ошибку MissingMethodException. Я также пытался добавить конструктор без параметров, но в результате появилось предупреждение «Свойство, не допускающее значения NULL, должно содержать значение, отличное от NULL».
Как решить эту проблему и правильно использовать внедрение зависимостей с компонентами Blazor, имеющими конструкторы без параметров?
вот мой регистр.razor
@page "/register" Зарегистрироваться Имя Фамилия Электронная почта Номер телефона Пароль @if (регистрация) { Регистрация... } иначе, если (регистрация прошла успешно) { Регистрация прошла успешно } еще { Зарегистрироваться } У вас уже есть аккаунт? Войдите сюда
@код { }
и мой appSetting.json
{ "Ведение журнала": { "LogLevel": { «По умолчанию»: «Информация», «Microsoft.AspNetCore»: «Предупреждение» } }, "AllowedHosts": "*", "ApiBaseUrl": "https://localhost:44330/" } Я новичок в приложениях Blazor Server и в настоящее время пытаюсь научиться подключаться к API-интерфейсам Blazor Server и взаимодействовать с ними. В частности, я работаю над реализацией функций регистрации пользователей и входа в систему. Однако я столкнулся с трудностями при настройке HttpClient и правильном порядке процесса регистрации, как описано в этом сообщении.
Я столкнулся с «MissingMethodException» MissingMethodException: невозможно динамически создать экземпляр типа «Blazor.Pages.Account.Register». Причина: в моем серверном приложении Blazor не определен конструктор без параметров при попытке использовать внедрение зависимостей с конструктором без параметров. Вот что я пробовал на данный момент:
Я создал UserService.cs
с использованием Blazor.API.Model; пространство имен Blazor.Services { публичный класс UserService { частный HttpClient только для чтения _httpClient; общественный UserService (HttpClient httpClient) { _httpClient = httpClient; } общедоступная асинхронная задача RegisterAsync (RegisterModel RegisterModel) { пытаться { вар ответ = ждут _httpClient.PostAsJsonAsync("/register", RegisterModel); если (ответ.IsSuccessStatusCode) { вернуть истину; } еще { вернуть ложь; } } ловить { вернуть ложь; } } } } Я обновил файл program.cs
var builder = WebApplication.CreateBuilder(args); // Добавляем сервисы в контейнер. builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); builder.Services.AddScoped(s => { вар httpClient = новый HttpClient { BaseAddress = новый Uri(builder.Configuration.GetSection("ApiBaseUrl").Value) }; вернуть httpClient; }); builder.Services.AddHttpClient(); builder.Services.AddScoped(); вар приложение = builder.Build(); Также я получаю сообщение об ошибке «Предупреждение CS8604. Возможен нулевой ссылочный аргумент для параметра 'uriString' в 'Uri.Uri(string uriString)'» при наведении указателя мыши на builder.Configuration.GetSection( "ApiBaseUrl").Value
и Мой регистр.razor.cs
с использованием Blazor.API.Model; использование Blazor.Services; пространство имен Blazor.Pages.Account { Регистр публичного частичного класса { частный UserService UserService {получить; набор; } частный bool isRegistering = ложь; частная регистрация boolSuccessful = false; частная RegisterModel RegisterModel = новая RegisterModel (); общедоступный реестр (UserService userService) { ПользовательскаяСервис = ПользовательскаяСервис; } частный асинхронный дескриптор задачи HandleValidSubmit() { // Начинаем процесс регистрации isRegistering = правда; //отправляем запрос на регистрацию на сервер bool RegistrationResult = ждут UserService.RegisterAsync(registerModel); // Обновляем состояние регистрации RegistrationSuccessful = RegistrationResult; // Остановить процесс регистрации isRegistering = ложь; } } } Однако при переходе к этому компоненту Register я получаю ошибку MissingMethodException. Я также пытался добавить конструктор без параметров, но в результате появилось предупреждение «Свойство, не допускающее значения NULL, должно содержать значение, отличное от NULL».
Как решить эту проблему и правильно использовать внедрение зависимостей с компонентами Blazor, имеющими конструкторы без параметров?
вот мой регистр.razor
@page "/register" Зарегистрироваться Имя Фамилия Электронная почта Номер телефона Пароль @if (регистрация) { Регистрация... } иначе, если (регистрация прошла успешно) { Регистрация прошла успешно } еще { Зарегистрироваться } У вас уже есть аккаунт? Войдите сюда
@код { }
и мой appSetting.json
{ "Ведение журнала": { "LogLevel": { «По умолчанию»: «Информация», «Microsoft.AspNetCore»: «Предупреждение» } }, "AllowedHosts": "*", "ApiBaseUrl": "https://localhost:44330/" } Я новичок в приложениях Blazor Server и в настоящее время пытаюсь научиться подключаться к API-интерфейсам Blazor Server и взаимодействовать с ними. В частности, я работаю над реализацией функций регистрации пользователей и входа в систему. Однако я столкнулся с трудностями при настройке HttpClient и правильном порядке процесса регистрации, как описано в этом сообщении.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение