我正在使用Powershell,并尝试使用api访问Azure功能管理。 我正在尝试获取在$ appName下创建的所有函数的列表
肯定是在调用前我用实际的Azure函数名称更改了$ appName
在此呼叫之前,我还获得了有效的$ authToken。
以下URL:
$Functions = Invoke-RestMethod -Method GET -Headers @{Authorization = ("Bearer {0}" -f $authToken)} -Uri "https://$appName.azurewebsites.net/admin/functions"
Powershell执行中的错误是:
Invoke-RestMethod:
The underlying connection was closed: An unexpected error occurred on a send.
At KeyFA.ps1:36 char:18
+ ... Functions = Invoke-RestMethod -Method GET -Headers @{Authorization = ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
我尝试将其设置为POST而不是GET,但存在相同的错误。
我尝试在浏览器中访问此URL,而浏览器中的错误是:
http 401表示未经授权。
然后,我还尝试从邮递员访问此URL,并正确设置了Bearer身份验证,但出现以下错误:
Could not get any response
There was an error connecting to
https://appname_comes_here.azurewebsites.net/admin/functions/
我在做什么不正确?
无法修复此错误。 URL现在是否已被Azure功能站点终止?
答案 0 :(得分:1)
由于您只发布了部分PowerShell代码,并且错误信息似乎是网络问题,所以我不知道您遇到的真正问题是什么以及如何解决。
所以我只是在这里发布我的工作PowerShell脚本,您可以参考我的代码来解决您的问题。
$appName = "<your app name>"
$userName='<your app credential user name>'
$userPWD='<your app credential user password>'
$apiBaseUrl = "https://$($appName).scm.azurewebsites.net/api"
$appBaseUrl = "https://$($appName).azurewebsites.net"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $userName,$userPWD)))
$jwt = Invoke-RestMethod -Uri "$apiBaseUrl/functions/admin/token" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method GET
$Functions = Invoke-RestMethod -Method GET -Headers @{Authorization = ("Bearer {0}" -f $jwt)} -Uri "$appBaseUrl/admin/functions"
注意:您可以按照下图获取$userName
和$userPWD
的值。
图1.在Azure门户上,打开Function App的Platform features
选项卡,然后单击Deployment Center
链接
图2.在FTP
的第一步中选择SOURCE CONTROL
选项,然后单击Dashboard
按钮以复制Username
和Password
的值,但只需在脚本中使用Username
前缀为$
的{{1}}的一部分