Возможна ли маршрутизация атрибутов в функциях Azure?

Я пытаюсь заставить параметр маршрута быть guid, но получаю ошибку ниже

«Исключение при выполнении функции: GetUser -> Произошла одна или несколько ошибок. -> Параметр привязки исключения «req» -> Неверное приведение из «System.String» в «System.Guid».

public static async Task<HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Admin, "get", Route = "GetUser/{userId:guid}")] HttpRequestMessage req,
            Guid userId, ILogger log)
        {
        }

Я делаю запрос http://localhost:7071/api/GetUser/246fb962-604d-4699-9443-fa3fa840e9eb/

Я что-то упускаю? Разве мы не можем заставить параметр маршрута быть guid?


person Venky    schedule 14.10.2017    source источник


Ответы (1)


Недопустимое приведение от «System.String» к «System.Guid»

Я могу воспроизвести ту же проблему при использовании ограничения маршрута {userId:guid} в функции httptrigger Azure на моей стороне, вы можете попробовать открыть проблема, чтобы оставить отзыв.

Кроме того, если есть возможность, можно попробовать вызвать Метод Guid.TryParse для преобразования строки обратно в значение Guid в коде функции, для справки приведен следующий код.

public static string Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "GetUser/{userId:guid}")]HttpRequestMessage req, string userId, TraceWriter log)
{
    log.Info("C# HTTP trigger function processed a request.");

    Guid newGuid;

    var resmes = "";

    if (Guid.TryParse(userId, out newGuid))
    {
        resmes = "userid: " + newGuid;
    }
    else {
        resmes = "error";
    }

    return resmes;
}
person Fei Han    schedule 15.10.2017