【问题标题】:How to enable azure function https easily when do local test本地测试时如何轻松启用azure函数https
【发布时间】:2021-06-08 09:22:35
【问题描述】:

我想在 Windows 上本地测试 Azure Function Http 触发器。

我使用 azure-function-core-tools 来运行类似的命令 func start --port 5007 --useHttps

然后我得到错误:自动证书生成当前无法在 .NET Core 版本上运行。

看来我应该使用类似的命令 func start --port 5007 --useHttps --cert certificate.pfx 在本地创建自签名证书后。

如果有办法轻松启用 https?

就像我使用 .net core webapi 时一样,我很容易导出 env:ASPNETCORE_URLS=https://localhost。单击某个按钮后,我可以很好地使用https。 我们有这样的东西吗?

或者如果func start --port 5007 --useHttps 足够但我错过了一些配置?

谢谢!

【问题讨论】:

    标签: azure-functions azure-functions-core-tools


    【解决方案1】:

    更新答案:

    func start --port 5007 --useHttps azure function v1 后不会自动创建证书。基于 .Net Core 的 azure function v2 和 azure function v3 工具不会为您创建证书。您应该手动生成证书。

    原答案:

    我可以重现你的错误:

    解决方案:

    使用管理员启动你的powershell,进入你的函数应用文件夹,然后使用这个命令:

    $cert = New-SelfSignedCertificate -Subject localhost -DnsName localhost -FriendlyName "Functions Development" -KeyUsage DigitalSignature -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.1")
    

    然后创建证书文件:

    Export-PfxCertificate -Cert $cert -FilePath certificate.pfx -Password (ConvertTo-SecureString -String 123 -Force -AsPlainText)
    

    终于可以使用https了:(下面的命令在windows cmd中运行。)

    func host start --port 5007 --useHttps --cors * --cert certificate.pfx --password 123
    

    【讨论】:

    • 您好,非常感谢您的回答!其实我知道你上面提到的启动 https 触发器的方式。我想知道我们是否可以轻松地使用命令 ``` func host start --port 5007 --useHttps ``` 直接启动它,但不能每次都添加“--cert certificate.pfx”。我真正想要的是一种要求 azure-function-tool 自动生成默认调试证书并在启动功能时使用它的方法。这样我就不必像 webapi 在调试时那样自己创建证书文件。
    • @south 是azure-functions-core-tools的问题。官方文档确实说--useHttps 将自动创建证书以使用 https 运行 azure 功能。但实际上,它只适用于azure function v1。(Azure function v1会自动生成证书,没问题。)基于.Net Core的azure function v2和v3不再自动生成证书。我认为您现在只能手动生成证书。
    • @south Azure 功能团队可能不再改进此功能。毕竟,Azure 功能在生产时不会在本地运行。将函数应用发布到 azure 后,将默认支持 https。(也支持 Http,除非您禁止它。)
    • @south func start --port 5007 --useHttps 在“azure function v1”之后不会为您生成证书。所以需要手动创建。
    • 非常感谢您的回答!好的,现在我可以在我的项目中设置一个自动生成证书的任务:)
    【解决方案2】:

    作为对鲍曼朱的回答的补充,您还可以将 VS 配置为然后在运行项目时使用证书。

    转到项目属性并选择“调试”选项卡。在 Application 参数中,添加以下内容:

    host start --useHttps --cert "certificate.pfx" --password "123"
    

    您还可以在项目中包含证书并将其设置为“如果较新则复制”以将其部署到您的 bin。

    【讨论】:

      【解决方案3】:

      Azure 功能核心工具 (V2) 现在有一个新开关,因此您不必再使用 --cert 和 --password 开关。您现在可以使用:

      host start --useHttps --useDefaultCert
      

      此外,为了完整起见,您可以使用以下方法为 dotnet 核心创建本地自签名证书:

      dotnet dev-certs https --trust
      

      【讨论】:

      • 这对我不起作用
      猜你喜欢
      • 2015-01-10
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      相关资源
      最近更新 更多