2017-10-14 45 views
3

我想执行的路线参数是​​但得到以下错误是属性的路由可以在Azure的功能

“异常而执行功能:的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吗?

回答

5
从“System.String”到

投无效“的System.Guid”

我可以重现相同的问题时,在我身边天青httptrigger功能使用路由约束{userId:guid},你可以尝试open an issue到给一个反馈。

此外,如果可能,您可以尝试拨打Guid.TryParse method将字符串转换回功能代码中的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; 
}