Я размещаю сервер Hangfire внутри Служба Windows, поэтому, когда мой ps запускается, сервер Hangfire запускается автоматически и начинает выполнять задание.
Теперь проблема в том, что когда я размещаю свою службу Windows в debug mode
, а также свою общую библиотеку, которая содержит код для выполнения длительных заданий в debug mode
, тогда все в порядке, т.е. Hangfire может подобрать и выполнить задание.
Но когда я разместить мою службу Windows, а также общую библиотеку в режиме выпуска, я получаю следующую ошибку:
Could not load file or assembly 'ClassLibrary1.SharedLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.
Моя служба Windows работает на LocalSystem
, а моя база данных находится на другом компьютере.
Код:
public partial class MyNewService1 : ServiceBase
{
private BackgroundJobServer _server;
private System.Diagnostics.EventLog eventLog1;
public MyNewService1()
{
InitializeComponent();
eventLog1 = new System.Diagnostics.EventLog();
if (!System.Diagnostics.EventLog.SourceExists("MySource"))
{
System.Diagnostics.EventLog.CreateEventSource(
"MySource", "MyNewLog");
}
eventLog1.Source = "MySource";
eventLog1.Log = "MyNewLog";
GlobalConfiguration.Configuration.UseSqlServerStorage("connectionstring");
}
protected override void OnStart(string[] args)
{
eventLog1.WriteEntry("In OnStart", EventLogEntryType.Information);
_server = new BackgroundJobServer();
}
protected override void OnStop()
{
_server.Dispose();
}
}
Я взял код из следующей ссылки: http://docs.hangfire.io/en/latest/background-processing/processing-jobs-in-windows-service.html
В документации ничего не упоминается, например, должен ли я размещать службу Windows в режиме отладки / выпуска.
Это проблема службы Windows или зависания?
Обновлять : Я думаю, что проблема связана со службой Windows, как описано здесь, но все равно не повезло:
System.BadImageFormatException возникла при сборке в режиме выпуска
@Evk Да, я пробовал это, а также мне пришлось изменить тип учетной записи. Я опубликовал ответ
На самом деле проблема была связана с разрешением, и я должен перейти с LocalSystem
на NetworkService
, чтобы назначить права NT AUTHORITY\SYSTEM
.
С этим я следую за ответом, приведенным по этой ссылке ниже, которая решила мою проблему:
System.BadImageFormatException возникла при сборке в режиме выпуска
Принятый ответ на вопрос, который вы связали, очень хорошо описывает. Вы пробовали?