由于Windows Platform FIPS问题,Azure Functions v1计时器触发的函数无法启动

时间:2018-10-08 18:31:39

标签: azure azure-functions

我正在尝试开发使用计时器触发器的功能应用程序,并且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问题,以便计时器触发器运行?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您的环境确实需要此FipsAlgorithmPolicy,则仅对Azure功能禁用它。

  1. 在文件资源管理器中,打开%localappdata%\AzureFunctionsTools\Releases\1.4.0\cli\func.exe.Config,在<enforceFIPSPolicy enabled="false"/>元素下添加<runtime>。请注意,以这种方式,一旦释放了新功能cli,就必须重复此步骤。

  2. 类似地,如果您在本地使用Storage Emulator,请打开C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe.config,在元素下添加<enforceFIPSPolicy enabled="false"/>

否则,只需为您的计算机禁用FipsAlgorithmPolicy。

  1. 在搜索框中,或右键单击“开始”按钮,然后单击“运行”,输入regedit以打开注册表编辑器。

  2. 在地址栏中(查看>地址栏),导航至Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy

  3. 双击Enabled,将“数值数据”更改为0。