Как использовать несколько необязательных параметров в функции Azure

Как использовать несколько необязательных параметров в функции Azure? Я создаю такую ​​функцию Azure с одним параметром, она работает.

public async Task<IActionResult> GetRName(
            [HttpTrigger(AuthorizationLevel.Function, "get",  
            Route = "CommonResource/{subscriptionId?}")] HttpRequest req,
            string subscriptionId, 
            string resourcetype, 
            string location, 
            ILogger log)
        {
         ---
        }

Если я добавлю дополнительный параметр, подобный этому, получаю ошибку.

[FunctionName("GetResourceName")]
        public async Task<IActionResult> GetRName(
            [HttpTrigger(AuthorizationLevel.Function, "get",  Route = "CommonResource/{subscriptionId:string?}/{resourcetype?}")] HttpRequest req,
            string subscriptionId ,string resourcetype , ILogger log)
        {
            log.LogInformation("This API should return Resource name.");

            //string resourcetype = req.Query["resourcetype"];
            resourcetype = req.Query["resourcetype"];
            string location = req.Query["location"];

Пожалуйста, проверьте прикрепленный снимок экрана для справки.

введите здесь описание изображения


person Raj    schedule 05.12.2019    source источник
comment
Какой параметр вы хотите использовать?   -  person George Chen    schedule 06.12.2019
comment
Я хочу использовать тип ресурса и местоположение. Является ли это возможным?   -  person Raj    schedule 09.12.2019


Ответы (2)


Запись ограничения «subscriptionId» — «строка» на маршруте «api/CommonResource/{subscriptionId:string?}/{resourcetype?}» не может быть разрешена средством разрешения ограничений типа «DefaultInlineConstraintResolver».

Вы используете {subscriptionId:string?}, который не поддерживается, что вызывает указанную выше ошибку.

В этом документе перечислены поддерживаемые ограничения, пожалуйста, обратитесь к нему.

введите здесь описание изображения

person Fei Han    schedule 10.12.2019

Вам нужно изменить свойство Route

Route = "CommonResource/{subscriptionId:int}/{resourcetype}")

Если вы хотите использовать несколько необязательных параметров, будут работать только последовательные параметры.

Route = "CommonResource/{subscriptionId:int?}/{resourcetype?}")
person sjokkogutten    schedule 06.12.2019
comment
Я получаю сообщение об ошибке, когда добавляю этот код Route = CommonResource/{subscriptionId:int?}/{resourcetype?}) - person Raj; 09.12.2019