问题描述
我有一件很奇怪的事情随机发生。
我有一个 api 控制器(实际上是 UmbracoAPiController
),它在本地和测试站点上都可以正常工作,并使用依赖项注入 (Autofac 5.1.2)。
但是有时当我添加一个非常简单的代码行时
var somevariable = "some variable";
然后它就无法再识别控制器,就像依赖注入停止工作一样:
{
"Message": "An error has occurred.","ExceptionMessage": "An error occurred when trying to create a controller of type 'MyApiController'. Make sure that the controller has a parameterless public constructor.","ExceptionType": "System.InvalidOperationException","StackTrace": " at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request,HttpControllerDescriptor controllerDescriptor,Type controllerType)\r\n at System.Web.Http.Controllers.HttpControllerDescriptor.CreateController(HttpRequestMessage request)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()","InnerException": {
"Message": "An error has occurred.","ExceptionMessage": "Type 'MyDomain.Api.Controllers.MyApiController' does not have a default constructor","ExceptionType": "System.ArgumentException","StackTrace": " at System.Linq.Expressions.Expression.New(Type type)\r\n at System.Web.Http.Internal.TypeActivator.Create[TBase](Type instanceType)\r\n at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage request,Type controllerType,Func`1& activator)\r\n at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request,Type controllerType)"
}
}
它真的是随机发生的。
然后我需要删除编译行,然后再次添加该行,编译它有时会开始工作,或者有时我需要多次重复删除和重新添加才能使其工作。
此外,当我让它在本地工作时,相同的代码有时会在测试站点上失败。而且我需要按照上面的做,然后再次部署以测试它是否可以重新开始工作。
这真的很令人沮丧,因为没有什么可以阻止代码,而且这一切都是随机发生的。
我不知道它可能对什么敏感。我知道这并不多,但它确实是正在发生的事情。
我使用 AutoFac 5.1.2 和 .NET 4.7.2
只是为了添加所有的api控制器都失败了,不仅仅是这个。所以 DI 一定对那个项目的某些事情很挑剔。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)