从 Azure 托管应用调用 Azure 自定义提供程序操作

问题描述

我正在尝试从“Hello World”、概念证明、托管应用程序中的托管应用程序调用自定义提供程序。我尝试使用以下 Microsoft document,但是函数应用程序似乎不起作用,并且在部署时在 Azure 中部署失败,因此我尝试自己制作。

我的资源提供程序在我的托管应用程序部署的 mainTemplate.json 中定义,部署后我可以从 REST GET 请求中检索以下定义。当我从 Azure CLI 调用资源提供程序时,我得到了所引用函数应用的响应,正如我所期望的那样。

{
    "properties": {
        "actions": [
            {
                "name": "public/product/GetDocumentation","routingType": "Proxy","endpoint": "https://faraveXXXX.azurewebsites.net/api/{requestPath}"
            }
        ],"provisioningState": "Succeeded"
    },"id": "/subscriptions/XXXXXXXX-995e-4e82-a86e-499522a63304/resourceGroups/mrg-Rob-20210311141704/providers/Microsoft.CustomProviders/resourceproviders/public","name": "public","type": "Microsoft.CustomProviders/resourceproviders","location": "eastus","tags": {}
}

我在 viewDeFinition.json 中创建了两个按钮。这是整个文件

{
    "$schema": "https://schema.management.azure.com/schemas/viewdeFinition/0.0.1-preview/ViewDeFinition.json#","contentVersion": "0.0.0.1","views": [
        {
            "kind": "Overview","properties": {
                "header": "TitleHeader","description": "TitleHeaderDescription","commands": [
                    {
                        "displayName": "Click","path": "public/product/GetDocumentation","icon": "Check"
                    }
                ]
            }
        },{
            "kind": "Metrics","properties": {
                "displayName": "This is my metrics view","version": "1.0.0","charts": [
                    {
                        "displayName": "Sample chart","chartType": "Bar","metrics": [
                            {
                                "name": "Availability","aggregationType": "avg","resourceTagFilter": [ "tag1" ],"resourceType": "Microsoft.Storage/storageAccounts","namespace": "Microsoft.Storage/storageAccounts"
                            }
                        ]
                    }
                ]
            }
        },{
            "kind": "Customresources","properties": {
                "displayName": "Test custom resource type","resourceType": "public","createUIDeFinition": { },"commands": [
                    {
                        "displayName": "Custom Context Action","icon": "Stop","createUIDeFinition": { }
                    }
                ],"columns": [
                    {"key": "name","displayName": "Name"},{"key": "properties.myProperty1","displayName": "Property 1"},{"key": "properties.myProperty2","displayName": "Property 2","optional": true}
                ]
            }
        },{
            "kind": "Associations","properties": {
                "displayName": "Test association resource type","targetResourceType": "Microsoft.Compute/virtualMachines","createUIDeFinition": { }
            }
        }
    ]
}

当我部署托管应用程序并单击概览页面上的按钮时,我收到以下错误

在“managedAppTest”中运行命令“单击”失败。错误:资源 提供者“public”没有找到有效的路由定义 '公共/产品/获取文档'。 请确保路由存在且配置正确。

解决方法

当您从托管应用程序调用时,路径需要以“自定义”文字为前缀,并且您不需要指定“公共”自定义提供程序名称。对于您的情况,这意味着您需要更新像这样的路径:

"path": "customproduct/GetDocumentation",