使用HttpTrigger属性在Azure功能中自定义路由

Nic*_*ick 4 c# function azure

我有一个已编译的Azure函数,我想使用HttpTrigger属性定义自定义路由.

我的代码看起来像这样:

public static async Task<HttpResponseMessage> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "qotd/{format}")]HttpRequestMessage req, string format, TraceWriter log)
{
  var quote = GetRandomQuote();
  if (format == "json")
  {
     return req.CreateResponse(HttpStatusCode.OK, quote, "application/json");
  }
  else
  {
     var strQuote = quote.Text + Environment.NewLine + quote.Author;
     return req.CreateResponse(HttpStatusCode.OK, strQuote, "text/plain");
  }
}
Run Code Online (Sandbox Code Playgroud)

当我这样称呼它: localhost:7071/api/qotd/json 我得到404.

当我这样称它为: localhost:7071/api/qotd /?format = json 然后函数成功.

如果我这样称呼: localhost:7071/api/qotd / 我得到一个相当讨厌的错误:

"执行函数时出现异常:QotDFunction - >异常绑定参数'格式' - >绑定数据不包含预期值'format'......"

如何在HttpTrigger的Route参数中定义绑定,以便我可以像这样调用我的函数:

localhost:7071/api/qotd - 用于参数格式的默认值

localhost:7071/api/qotd/json - 将"json"作为格式的值传递?

对于路线,我也尝试了"qotd/{format:alpha?}"但得到了相同的结果.

Nic*_*ick 6

事实证明,我必须明确重建项目.重建它迫使VS以适当的路径创建一个新的function.json文件.如果不这样做,function.json仍然保留旧的默认路由.