我正在创建一个.net核心有角度的网站,并遇到ApiController的运行ApiController(按字母顺序升序排列)的问题,但其他所有都将失败,并显示500错误,要求以下内容:
InvalidCastException: Unable to cast object of type 'AbcController' to type 'AccController'.
lambda_method(Closure , object , object[] )
使用angular和ninject(相关的主要部分)创建.net core 2.2网站。我已经将其设置为与ApiControllers工作的现有项目相同,但是会出现500个错误。我尝试在以下各项之间进行更改:
〜控制器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'.
答案 0 :(得分:0)
https://stackoverflow.com/users/2309376/simply-ged提示我检查另外2种方法,并通过一些旧代码重新注册。看起来ninject引起了问题。如上所述,它仅映射了一些控制器。此后,我删除了ninject,转而使用
services.AddSingleton<ITestService, TestService>();
此后已解决了该问题。