Проблема с настройкой параметров в ASP.NET Core 2 - PullRequest
0 голосов
/ 08 октября 2018

При настройке параметров в моем проекте я столкнулся с этой ошибкой:

System.InvalidOperationException: не удалось создать экземпляр типа 'Microsoft.Extensions.Options.IOptions`1 [[myproject.Models.ConnectionStrings,] '.Сложные типы, связанные с моделью, не должны быть абстрактными или значениями и должны иметь конструктор без параметров.В качестве альтернативы, задайте для параметра 'optionsAccessor' ненулевое значение по умолчанию.

Есть идеи?

Я настроил модель следующим образом:

namespace myproject.Models
{
  public class ConnectionStrings
  {
    public ConnectionStrings()
    {
        AzureStorageConnectionString = "azurestorageconnectionstring_ctor";
    }
    public string AzureStorageConnectionString { get; set; }
  }
}

Startup.cs ConfigureServices (службы IServiceCollection) содержит следующие две строки

services.AddOptions();
services.Configure<ConnectionStrings>(Configuration.GetSection("ConnectionStrings"));

Мой контроллер содержит это

private ConnectionStrings _connectionStrings;
public IActionResult Index(IOptions<ConnectionStrings> optionsAccessor)
{
  _connectionStrings = optionsAccessor.Value;
  return View();
}

И мои appsettings.json и appsettings.Development.json состоят из следующих

{
 "Logging": {
 "LogLevel": {
   "Default": "Debug",
   "System": "Information",
   "Microsoft": "Information"
  }
 },
 "ConnectionStrings": {
   "AzureStorageConnectionString": "xxxxxxxxx"
 },
}

1 Ответ

0 голосов
/ 08 октября 2018

Вы должны ввести IOptions<ConnectionStrings> в конструктор контроллера , а не в метод Index().

Определяя его как параметр действия, вы ожидаетеModelBinder чтобы построить его для вас (и, очевидно, он не может).

См. Документация

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