尝试将Quartz.NET与oWin一起使用时出现Quartz.Simpl.JsonObjectSerializer错误

问题描述 投票:0回答:1

[当我尝试在使用带有Autofac的oWin和Quartz.Net 3.0.7的项目上调用控制器时,收到以下错误。

{
"Message": "An error has occurred.",
"ExceptionMessage": "An error occurred when trying to create a controller of type 'QuartzController'. 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.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()",
"InnerException": {
"Message": "An error has occurred.",
"ExceptionMessage": "An exception was thrown while activating Chatech.Quartz.Owin.Controllers.QuartzController -> Chatech.Quartz.Owin.Application.JobInformation.JobInformationService -> λ:Quartz.IScheduler.",
"ExceptionType": "Autofac.Core.DependencyResolutionException",
"StackTrace": "   at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1 parameters, Object& decoratorTarget) in C:\\projects\\autofac\\src\\Autofac\\Core\\Resolving\\InstanceLookup.cs:line 135\r\n   at Autofac.Core.Resolving.InstanceLookup.Execute() in C:\\projects\\autofac\\src\\Autofac\\Core\\Resolving\\InstanceLookup.cs:line 83\r\n   at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, IComponentRegistration registration, IEnumerable`1 parameters) in C:\\projects\\autofac\\src\\Autofac\\Core\\Resolving\\ResolveOperation.cs:line 131\r\n   at Autofac.Core.Resolving.ResolveOperation.Execute(IComponentRegistration registration, IEnumerable`1 parameters) in C:\\projects\\autofac\\src\\Autofac\\Core\\Resolving\\ResolveOperation.cs:line 93\r\n   at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) in C:\\projects\\autofac\\src\\Autofac\\ResolutionExtensions.cs:line 1041\r\n   at Autofac.ResolutionExtensions.ResolveOptionalService(IComponentContext context, Service service, IEnumerable`1 parameters) in C:\\projects\\autofac\\src\\Autofac\\ResolutionExtensions.cs:line 814\r\n   at Autofac.Integration.WebApi.AutofacWebApiDependencyScope.GetService(Type serviceType)\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)",
"InnerException": {
"Message": "An error has occurred.",
"ExceptionMessage": "Object serializer type 'Quartz.Simpl.JsonObjectSerializer, Quartz.Serialization.Json' could not be instantiated.",
"ExceptionType": "Quartz.SchedulerException",
"StackTrace": "   at Quartz.Impl.StdSchedulerFactory.<Instantiate>d__65.MoveNext() in C:\\projects\\quartznet\\src\\Quartz\\Impl\\StdSchedulerFactory.cs:line 666\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at Quartz.Impl.StdSchedulerFactory.<GetScheduler>d__69.MoveNext() in C:\\projects\\quartznet\\src\\Quartz\\Impl\\StdSchedulerFactory.cs:line 1114\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at Autofac.Extras.Quartz.QuartzAutofacFactoryModule.<>c.<Load>b__8_2(IComponentContext c) in C:\\work\\autofac.extras.quartz\\src\\Autofac.Extras.Quartz\\QuartzAutofacFactoryModule.cs:line 90\r\n   at Autofac.Builder.RegistrationBuilder.<>c__DisplayClass0_0`1.<ForDelegate>b__0(IComponentContext c, IEnumerable`1 p) in C:\\projects\\autofac\\src\\Autofac\\Builder\\RegistrationBuilder.cs:line 62\r\n   at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) in C:\\projects\\autofac\\src\\Autofac\\Core\\Activators\\Delegate\\DelegateActivator.cs:line 72\r\n   at Autofac.Core.Resolving.InstanceLookup.Activate(IEnumerable`1 parameters, Object& decoratorTarget) in C:\\projects\\autofac\\src\\Autofac\\Core\\Resolving\\InstanceLookup.cs:line 117",
"InnerException": {
"Message": "An error has occurred.",
"ExceptionMessage": "Could not load type 'Quartz.Simpl.JsonObjectSerializer, Quartz.Serialization.Json'",
"ExceptionType": "System.TypeLoadException",
"StackTrace": "   at Quartz.Simpl.SimpleTypeLoadHelper.LoadType(String name) in C:\\projects\\quartznet\\src\\Quartz\\Simpl\\SimpleTypeLoadHelper.cs:line 58\r\n   at Quartz.Impl.StdSchedulerFactory.<Instantiate>d__65.MoveNext() in C:\\projects\\quartznet\\src\\Quartz\\Impl\\StdSchedulerFactory.cs:line 653"
}
}
}
}

我有以下代码初始化Quartz.Net

var schedulerConfig = new NameValueCollection
{
    {"quartz.serializer.type", "json"},
    {"quartz.scheduler.instanceName", "Main Quartz Job Scheduler"},
    {"quartz.scheduler.instanceId", "QuartzAdmin"},
};

containerBuilder.RegisterModule(new QuartzAutofacFactoryModule
{
    ConfigurationProvider = c => schedulerConfig
});

[如果我评论{"quartz.serializer.type", "json"},,一切正常。我已经引用了Quartz.Serialization.Json,并且看到它正在复制到bin \ Debug文件夹中。这是什么问题?

c# .net quartz.net quartz.net-3.0
1个回答
0
投票

有一个单独的Quartz.Serialization.Json软件包,您需要安装才能使用json串行器。

© www.soinside.com 2019 - 2024. All rights reserved.