如何在本地测试时轻松启用azure function https

How to enable azure function https easily when do local test

我想在 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 足够但我错过了一些配置?

谢谢!

更新答案:

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

作为 Bowman Zhu 答案的补充,您还可以配置 VS,然后在 运行 项目时使用证书。

转到项目属性并select“调试”选项卡。在应用程序参数中,添加以下内容:

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

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

Azure Function Core Tools (V2) 现在有一个新开关,因此您不必再使用 --cert 和 --password 开关。您现在可以使用:

host start --useHttps --useDefaultCert

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

dotnet dev-certs https --trust