Только что создал службу Windows, чтобы попытаться запустить мои задания за пределами WebApp.Итак, сервис установлен и я запустил его вручную.
Если я захожу на панель управления Hangfire, я вижу, что новый работающий сервер говорит, что он активен.Пока все в порядке.
Проблема начинается с моего веб-приложения.Я предполагал, что для запуска заданий в службе мне пришлось удалить services.AddHangfireServer();
из моего Startup.cs
, чтобы только сервер Hangfire, созданный службой Windows, работал.
Затем, если я начну ставить в очередь некоторыезадания из моего веб-приложения, задания собираются на Scheduled
со следующей ошибкой:
System.IO.FileNotFoundException
Не удалось загрузить файл или сборку 'Cri.Interactif.GenerateurCodes.Web,PublicKeyToken = null 'или одна из его зависимостей.Системе не удается найти указанный файл.
в System.Reflection.RuntimeAssembly._nLoad (имя_файла AssemblyName, строковое codeBase, свидетельство assemblySecurity, местоположение TimetimeAssemblyHint, StackCrawlMark & stackMark, IntPtr pPrivHostBinder, BooleanSecurityFound, BooleanSecurityFound, BooleanSecurityFone)
в System.Reflection.RuntimeAssembly.nLoad (имя_файла_сборки, кодовая строка строки, сборка доказательствSecurity, расположениеHame сборочного узлаHint, StackCrawlMark & stackMark, IntPtr pPrivHostBinder, логическое_обрабатывающее_обрабатывающее_применение, Доказательство assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark & stackMark, IntPtr pPrivHostBinder, Булево значение throwOnFileNotFound, Логическое значение forIntrospection, Логическое подавлениеSecurityChecks) в System.Reflection.Assembly.Loef.HemonFameesolver (String assemblyString) в System.Collections.Concurrent.ConcurrentDictionary 2.GetOrAdd(TKey key, Func
2 valueFactory) в Hangfire.Common.TypeHelper.CachedAssemblyResolver (AssemblyName assemblyName) в System.TypeNameParser.ResolveAssembly, Func 4 typeResolver, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark)
at System.TypeNameParser.GetType(String typeName, Func
2 AssemblyResolver, Func 4 typeResolver, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark)
at System.Type.GetType(String typeName, Func
2 AssemblyResolver, Func`4 typeResolver, Boolean throwOnError) в Hangfire.Common.TypeHelper.DefaultTypeResolver (имя типа строки) в Hangfire.Storage.InvocationData.D22 * 102321 (1023)* Кто-нибудь сталкивался с этим раньше?
Кажется, что служба Windows не может получить доступ к методам в моем основном приложении asp.net, поэтому я что-то пропустил в конфигурации?
В документации Hangfire ничего не говорится о ссылках на веб-проект (что было бы невозможно в любом случае из-за службы, нацеленной на .net framework 4.7.2, когда веб-проект нацелен на .net core 2.1 ..Я так застрял здесь.Могли бы воспользоваться любой помощью.