Как исправить `Невозможно привести контроллер как ошибку типа контроллера` - проблемы ApiController - PullRequest
0 голосов
/ 11 января 2019

Я создаю основной угловой веб-сайт .net и сталкиваюсь с проблемами с ApiController, где ApiController (упорядоченный по алфавиту asc) будет работать, но все остальные потерпят неудачу с ошибкой 500, утверждая следующее:

InvalidCastException: Unable to cast object of type 'AbcController' to type 'AccController'.

lambda_method(Closure , object , object[] )

Создание сайта .net core 2.2 с использованием angular и ninject (основные части актуальны). Я настроил его так же, как существующий проект, где работают ApiControllers, но получаю 500 ошибок. Я попытался изменить между следующим:

  • Настройка обоих в качестве контроллера
  • Настройка обоих в качестве ControllerBase
  • Создание BaseController, который расширяется, где BaseController является контроллером
  • Создание BaseController, который расширяется, где BaseController имеет значение ControllerBase
  • Добавлены / удалены теги для ApiController в контроллерах
  • Добавлены / удалены теги для маршрута в контроллерах
  • Добавлена ​​/ удалена ручная настройка путей MVC
  • Переупорядоченное приложение. ### настройка параметров, таких как UseStaticFiles () и UseMvc ()

~ Контроллер 1 ~


    [Route("api/[controller]")]
    [ApiController]
    public class AbcController : ControllerBase
    {
        [HttpGet("Get")]
        public IActionResult Get()
        {
            return this.Ok("ABC hello world");
        }
    }

~ Контроллер 2 ~


    [Route("api/[controller]")]
    [ApiController]
    public class AccController : ControllerBase
    {
        [HttpGet("Get")]
        public IActionResult Get()
        {
            return this.Ok("ACC hello world");
        }
    }

Метод настройки запуска


    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHsts();
        }

        Kernel = RegisterApplicationComponents(app, loggerFactory);

        app.Use(async (context, next) => { await next.Invoke(); });
        app.UseHttpsRedirection();
        app.UseSession();
        app.UseMvc();
        app.UseHttpMiddleware();
        app.UseDefaultFiles();
        app.UseStaticFiles();
    }

Текущий результат, при попытке вызвать api/Abc/Get действительный ответ, 200 результат. Текущий результат для попытки вызова api/Acc/Get равен 500, с полным сообщением об ошибке:

An unhandled exception occurred while processing the request.
InvalidCastException: Unable to cast object of type 'AbcController' to type 'AccController'.

1 Ответ

0 голосов
/ 18 января 2019

https://stackoverflow.com/users/2309376/simply-ged побудило меня проверить через 2 дополнительных метода, и заново обработать некоторые из старого кода. Похоже, нинъект был причиной проблем. Это было только отображение некоторых контроллеров, как указано выше. С тех пор я удалил ninject, перейдя к чисто используя

    services.AddSingleton<ITestService, TestService>();

, который с тех пор решил эту проблему.

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