【发布时间】:2016-08-11 09:14:59
【问题描述】:
我已经创建了 ASP.NET WebAPI .NET 框架 4.5。 忍者 3.2.00 微软.OWIN 3.0.10
API 部署到 IIS-7
我们的 OWIN 启动类如下所示:
public class Startup
{
public void Configuration(IAppBuilder app)
{
var config = GlobalConfiguration.Configuration;
WebApiConfig.Register(config);
NinjectConfig.Register(app, config);
}
}
和 NinjectConfig.cs 的样子
public class NinjectConfig
{
public static void Register(IAppBuilder app, HttpConfiguration config)
{
app.UseNinjectMiddleware(CreateKernel)
.UseNinjectWebApi(config);
}
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Load("XYZ.*.dll");
return kernel;
}
}
遇到以下错误...
如果在 AppPool 刷新后至少有两个同时调用 api,则两个同时调用中的一个在大约一秒后失败并出现错误,另一个在启动 3 秒后成功。所有后续调用都会成功,并行或按顺序调用。
回收AppPool后单次请求不会出现该问题
堆栈跟踪:
{
"Message":"An error has occurred.",
"ExceptionMessage":"An error occurred when trying to create a controller of type 'TestController'. 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__1.MoveNext()",
"InnerException":{
"Message":"An error has occurred.",
"ExceptionMessage":"Type 'Test.XYZ.Api.Controllers.TestController' 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,
HttpControllerDescriptor controllerDescriptor,
Type controllerType)"
}
我们想知道这是否是加载 Ninject 依赖项时的某种并发问题。任何人都可以帮助我们解决问题可能是什么,或者我们的 Startup 类是否有问题?
【问题讨论】:
标签: .net asp.net-web-api ninject owin