Ошибка в .NET-контроллере ядра проекта .NET, вызывающая ошибку - PullRequest
0 голосов
/ 05 ноября 2018

Я создал новый проект .Net-Core Angular после мастера в VS2017, затем я добавил новый конструктор с одним параметром в контроллере, как это:

[Route("api/[controller]")]
public class SampleDataController : Controller
{
    private readonly string name;

    public SampleDataController(string something)
    {
        name = something;
    }

    public SampleDataController()
    {

    }

    //Some other actions
}

Я провел несколько тестов для этого блока кода:

  1. Когда есть только конструктор по умолчанию, он работает нормально. вместе с неиспользованной приватной строкой.
  2. Он больше не работает, когда появляется конструктор с одним параметром, с конструктором по умолчанию или без него.

NB. Если у вас возникли проблемы с отладкой недавно созданного углового проекта в VS2017, просмотрите эту ссылку

1 Ответ

0 голосов
/ 06 ноября 2018

При удалении конструктора по умолчанию среда выполнения попытается создать экземпляр с помощью конструктора с одним параметром. Тогда, скорее всего, среда выполнения не знает, как разрешить строковую зависимость для создания контроллера.

Следовательно, в вашем методе ConfigureServices в Startup.cs включите регистрацию контроллеров как сервисов, а затем зарегистрируйте зависимость

services.AddMvc().AddControllersAsServices();
services.AddTransient(ctx => new SampleDataController("your string value"));
...