无法访问Azure Functions的管理URL

时间:2019-02-23 15:20:45

标签: azure powershell azure-functions azure-app-service-envrmnt

我正在使用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功能站点终止?

1 个答案:

答案 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链接

enter image description here

图2.在FTP的第一步中选择SOURCE CONTROL选项,然后单击Dashboard按钮以复制UsernamePassword的值,但只需在脚本中使用Username前缀为$的{​​{1}}的一部分

enter image description here