我正在使用 IBMMQDotnetClient NuGet 包 (9.3.3),并且如此处所述,您应该能够使用环境变量覆盖 mqclient.ini 中定义的设置。当我在本地运行我的应用程序(Azure Function 应用程序)时,这似乎不起作用。
我的 mqclient.ini 位于我的应用程序的根目录中,包含以下内容:
Trace:
MQDotnetTraceLevel=2
MQDotnetTracePath=C:\home\mq_traces
这工作正常,当我尝试连接到我的 MQ 主机时,我可以看到在该目录中创建
.TRC
文件。
但是当我尝试通过 launchSettings.json 覆盖这些设置时,没有任何变化。
launchSettings.json:
{
"profiles": {
"FunctionAppWithMq": {
"commandName": "Project",
"commandLineArgs": "--port 7222",
"launchBrowser": false,
"environmentVariables": {
"MQDotnetTraceLevel": "1",
"MQDotnetTracePath": "C:\\home\\traces_from_environment_variables"
}
}
}
}
跟踪文件仍在我的 mq_traces 文件夹中生成。 我知道环境设置正确;当我在活动函数之一中使用
Environment.GetEnvironmentVariable()
记录值时,我从 launchSettings.json 中获取配置的值。
如何让 MQ 客户端使用我的环境变量?
我希望能够通过配置来控制跟踪,而不是通过 .ini 文件。但是,当我从 Azure 函数应用程序中完全删除 ini 文件时,出现以下异常:
Exception: System.TypeInitializationException: The type initializer for 'IBM.WMQ.MQQueueManager' threw an exception.
---> System.IO.FileNotFoundException: Error reading the directory.
at System.IO.FileSystemWatcher.StartRaisingEvents()
at IBM.WMQ.MQClientCfg.CheckForMqclientIniFileChanges()
at IBM.WMQ.Nmqi.NmqiEnvironment..ctor(NmqiPropertyHandler nmqiPropertyHandler)
at IBM.WMQ.Nmqi.NmqiFactory.GetInstance(NmqiPropertyHandler properties)
at IBM.WMQ.MQQueueManager..cctor()
(本地不会出现此异常)
根据文档here,用于控制跟踪的环境变量是
MQDOTNET_TRACE_ON
、MQTRACELEVEL
和MQTRACEPATH
,而不是MQDotnetTraceLevel
和MQDotnetTracePath
。