c# - .Net 应用程序作为 Azure Web 作业未写入磁盘
问题描述
我有一个带有构建平台 x86 的 .net core 2.2 控制台应用程序,它只调用一个非托管 dll,它返回一个布尔结果,并且这个 dll 还在磁盘上写入一个名为“OMNISCHEDULERLIB.LOG”的 txt 文件,而在本地调试时我可以运行它和函数正确执行并在控制台上打印出 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 作为 AppService 的 WebJob 时,webjob 会在控制台上正确打印出结果,但在输出文件夹下没有创建日志文件(我已通过 ftp 和 Kudu 工具进行了检查)。我不明白的是,如果我继续使用 Kudu 工具和 webjob 目录并通过 cmd 'start myapp.exe' 运行控制台应用程序的 .exe,我会在控制台上得到结果并创建 .log 文件在我的网络作业的输出文件夹下。
我的问题是运行 azure webjob 以执行我的 .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 文件,但是如果我从 kudu 的 cmd 'start OmniManager.OmniSchedulerWebJob.exe' 手动运行命令,它将返回与上述相同的结果'True',但生成了 .log 文件。我尝试添加 run.cmd 来运行我的 dotnet 控制台应用程序 dll 但没有成功,但似乎我收到了一个错误,因为我无法从 x86 平台运行它,而且我还没有找到运行“dotnet”的方法选择 .net 的 x86 sdk 时执行命令,但我的 exe 将以 32 位执行。
解决方案
您可以使用它dotnet consolecorewebjob.dll
来运行控制台核心应用程序。有关更多详细信息,您可以参考有关如何将 .NET Core 控制台应用程序部署到 Azure、WebJob的文章。
您可以尝试查看下的日志D:\home\data\logs\OMNISCHEDULERLIB.log
。
推荐阅读
- javascript - 如何隐藏两组不同同位素元素的标题
- python - 不使用任何 Numpy 或 Sklearn 库手动计算 AUC
- office-ui-fabric - 使用 office-ui-fabric-react 组件将所有样式导出到 css 文件
- micropython - 为什么我的 microbit 会显示这个动画?
- xml - boost property_tree:遍历重复子元素中重复子元素的属性
- javascript - 云函数 - 像对象值一样访问 json
- python-3.x - 使用 Python3 选择性地处理 ANTLR4 中的空格
- apache-spark - 如何使用 Spark 修复 parquet 文件分区中的不一致模式
- sql - 在 sql server 中存储链接到客户端的大列表的最佳方法
- c# - WCF 错误:套接字连接已中止