我试过了
/// <summary>
/// Request the Facebook Token
/// </summary>
[FunctionName("SolicitaFacebookToken")]
[Route("SolicitaToken/?fbAppID={fbAppID}&fbCode={fbCode}&fbAppSecret={fbAppSecret}")]
public static async Task<HttpResponseMessage> SolicitaFacebookToken(
[HttpTrigger(AuthorizationLevel.Function, methods: new string[] { "get" } )]
HttpRequestMessage req,
TraceWriter log,
string fbAppID,
string fbCode,
string fbAppSecret
)
{ }
Run Code Online (Sandbox Code Playgroud)
当我访问URL时
http://localhost:7071/api/SolicitaFacebookToken/?fbAppID=ABC&fbCode=DEF&fbAppSecret=GHI
Run Code Online (Sandbox Code Playgroud)
但这会带来以下错误:
无法从Azure WebJobs SDK调用“ SolicitaFacebookToken”。是否缺少Azure WebJobs SDK属性?System.InvalidOperationException:无法从Azure WebJobs SDK调用'SolicitaFacebookToken'。是否缺少Azure WebJobs SDK属性?在Microsoft.Azure.WebJobs.JobHost.Validate(IFunctionDefinition函数,对象键)在异步Microsoft.Azure.WebJobs.JobHost.CallAsync(??)在异步Microsoft.Azure.WebJobs.Script.ScriptHost.CallAsync(String method,Dictionary异步Microsoft.Azure.WebJobs.Script.Host.FunctionRequestInvoker处的`2个参数,异步Microsoft.Azure.WebJobs.Script.WebHost.WebScriptHostManager.HandleRequestAsync(FunctionDescriptor function,HttpRequestMessage request,CancellationToken cancellingToken)处的异步参数。
如果我更改为
HttpRequestMessage req,
string fbAppID,
string fbCode,
string fbAppSecret,
TraceWriter log
Run Code Online (Sandbox Code Playgroud)
[14/04/2018 15:24:49]以下1个功能有误:
[14/04/2018 15:24:49] SolicitaFacebookToken:Microsoft.Azure.WebJobs.Host:错误索引方法'Function1.SolicitaFacebookToken'。Microsoft.Azure.WebJobs.Host:无法将参数“ fbAppID”绑定为字符串类型。确保绑定支持参数类型。如果您正在使用绑定扩展(例如ServiceBus,Timer等),请确保已在启动代码(例如config.UseServiceBus(),config.UseTimers()等)中调用了扩展的注册方法。 )。
在Azure Functions模板代码中,有
string name = req.GetQueryNameValuePairs()
.FirstOrDefault(q …Run Code Online (Sandbox Code Playgroud) 我有一个HTTP调用触发的以下Azure功能:
public static class MyAzureFunction
{
[FunctionName("api/v1/resource/")]
public static async Task Run([HttpTrigger(AuthorizationLevel.Function, "get")]HttpRequestMessage request, ILogger logger)
{
// Extract query string params from the request...
}
}
Run Code Online (Sandbox Code Playgroud)
我希望将参数自动传递给Run方法,就像使用ASP.NET Core Web API一样,而不必从请求本身中提取它们并解析它们.
这是我想要得到的一个例子:
[FunctionName("api/v1/resource/{resourceId}")]
public static async Task Run([HttpTrigger(AuthorizationLevel.Function, "get")]HttpRequestMessage request, ILogger logger, int resourceId)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
或者,在做POST时:
[FunctionName("api/v1/resource/")]
public static async Task Run([HttpTrigger(AuthorizationLevel.Function, "post")]HttpRequestMessage request, ILogger logger, [FromBody] SomeEntityModel entityModel)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)