У меня есть консольное приложение .net core 2.2 с платформой сборки x86, которое просто вызывает неуправляемую dll, которая возвращает bool результата, и эта dll также записывает на диск txt-файл с именем «OMNISCHEDULERLIB.LOG», находясь в режиме локальной отладки.Я могу запустить его, и функция выполняется правильно, и выводит на консоль логический результат от dll.
class Program
{
static void Main(string[] args)
{
try
{
var result = ProcessJobs();
Console.WriteLine(result);
}
catch (Exception e)
{
Console.WriteLine(e.Message + e.StackTrace);
}
}
[DllImport("Output/OmniSchedulerLIB.dll", CallingConvention = CallingConvention.StdCall, EntryPoint = "ProcessJobs")]
private static extern bool ProcessJobs();
}
Это код моего файла Program.cs, который локально вызывает dll и генерирует напапка Выведите «OMNISCHEDULERLIB.LOG».Когда я развернул его в Azure в качестве WebJob-приложения AppService, веб-работа правильно выводит на консоль результаты, но в выходной папке не создается файл журнала (я проверил через ftp и инструмент Kudu).Чего я не понимаю, так это того, что если я захожу на инструмент Kudu и в каталог webjob и запускаю мой .exe консольного приложения с помощью cmd 'start myapp.exe', я получаю результат на консоли и создаю файл .logв папке «Вывод» на моем веб-задании.
Мой вопрос заключается в том, какая команда выполняет веб-задание Azure для выполнения моей основной консоли .net и как она предотвращает запись на диск или любое другое объяснение этой ситуации.?
Редактировать: после перехода в D: \ home \ data \ logs \ я смог найти, какой скрипт выполняется
[03/13/2019 10:05:00 > a87042: SYS INFO] Status changed to Initializing
[03/13/2019 10:05:05 > a87042: SYS INFO] Run script 'OmniManager.OmniSchedulerWebJob.exe' with script host - 'WindowsScriptHost'
[03/13/2019 10:05:05 > a87042: SYS INFO] Status changed to Running
[03/13/2019 10:05:10 > a87042: INFO] True
[03/13/2019 10:05:10 > a87042: SYS INFO] Status changed to Success
Но файл .log там не создается,но если я запускаю вручную команду из cmd 'start OmniManager.OmniSchedulerWebJob.exe из команды kudu, она выдаст тот же результат выше' True ', но с созданным файлом .log.Я безуспешно пытался добавить run.cmd для запуска моего dll консольного приложения dotnet, но, похоже, я получаю сообщение об ошибке, так как не могу запустить его с платформы x86 и не нашел способа запустить 'dotnet'Команда при выборе x86 SDK .NET, но мой исполняемый файл будет выполняться в 32-разрядной.