试图在Windows服务中实例化Microsoft.Azure.EventHubs EventProcessorHost导致发生以下异常:
Service cannot be started.
Microsoft.Azure.EventHubs.Processor.EventProcessorRuntimeException:
Out of retries creating lease for partition --->
...
System.InvalidOperationException:
This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.
正在运行的服务器将FipsAlgorithmPolicy密钥设置为Enabled(1),这是由组策略强制执行的,因此不能设置为Disabled(0)。
答案 0 :(得分:2)
EventProcessorHost在内部创建CloudStorageAccount类的实例。静态属性“ UseV1MD5”的默认值为 true 。因此,任何实例化的CloudStorageAccount对象的默认行为是使用有缺陷的MD5哈希算法,该算法不符合FIPS / FISMA。
解决方案是在实例化EventProcessorHost之前将静态属性设置为false,以确保基础CloudStorageAccount使用与FIPS / FISMA兼容的MD5哈希算法版本。
CloudStorageAccount.UseV1MD5 = false;
_eventProcessorHost = new EventProcessorHost("<event-hub-path>",
"<consumer-group-name>",
"<event-hub-connection-string>",
"<storage-connection-string>",
"<lease-container-name>");
在撰写本文时,我无法通过Google,StackOverflow等找到此解决方案,而是通过分析这些类的内部结构并进行实验来找到它的。
HTH