我正在尝试开发使用计时器触发器的功能应用程序,并且Windows平台FIPS出现问题,该问题阻止了计时器触发的功能在本地启动。这是导致错误的代码(这是默认的计时器触发函数):
using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
namespace FunctionApp1
{
public static class Function1
{
[FunctionName("Function1")]
public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, TraceWriter log)
{
log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
}
}
}
当我尝试在func.exe中运行此功能时,会产生以下错误:
The listener for function 'Function1' was unable to start. mscorlib: Exception has been thrown by the target of an invocation. mscorlib: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.
此确切代码可在我可以访问的另一个开发环境中使用。我需要怎么做才能解决这些Windows平台FIPS问题,以便计时器触发器运行?
谢谢!
答案 0 :(得分:1)
如果您的环境确实需要此FipsAlgorithmPolicy,则仅对Azure功能禁用它。
在文件资源管理器中,打开%localappdata%\AzureFunctionsTools\Releases\1.4.0\cli\func.exe.Config
,在<enforceFIPSPolicy enabled="false"/>
元素下添加<runtime>
。请注意,以这种方式,一旦释放了新功能cli,就必须重复此步骤。
类似地,如果您在本地使用Storage Emulator,请打开C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe.config
,在元素下添加<enforceFIPSPolicy enabled="false"/>
。
否则,只需为您的计算机禁用FipsAlgorithmPolicy。
在搜索框中,或右键单击“开始”按钮,然后单击“运行”,输入regedit
以打开注册表编辑器。
在地址栏中(查看>地址栏),导航至Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy
。
双击Enabled
,将“数值数据”更改为0。