Azure函数中是否可以进行属性路由

Ven*_*nky 6 azure attributerouting azure-functions

我试图强制路由参数,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)
        {
        }
Run Code Online (Sandbox Code Playgroud)

我的要求是 http://localhost:7071/api/GetUser/246fb962-604d-4699-9443-fa3fa840e9eb/

我错过了什么吗?我们不能强制路由参数是guid吗?

Fei*_*Han 6

从'System.String'到'System.Guid'的转换无效

我可以{userId:guid}在Azure httptrigger函数中使用Route约束时重现相同的问题,您可以尝试打开问题以提供反馈.

此外,如果可能,您可以尝试调用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;
}
Run Code Online (Sandbox Code Playgroud)