Azure Functions中是否可以使用属性路由?

6

我试图强制使用路由参数作为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 吗?

1个回答

6

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

当我在Azure httptrigger函数中使用路由约束{userId:guid}时,我可以复现同样的问题。您可以尝试提交反馈来解决这个问题。

此外,如果可能的话,您可以尝试调用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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接