对于Azure Functions来说,这是非常新的,并且感到非常沮丧。
我要做的就是在HttpTriggerFunction的“ get”请求上执行,然后从CloudBlobContainer返回流内容。
我真的不明白为什么这么难。只是尝试使用Azure Functions托管SPA。
类似这样
public static class UIHandler
{
[FunctionName("UIHandler")]
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = null)]HttpRequest req,
TraceWriter log,
CloudBlobContainer container)
{
log.Info("C# HTTP trigger function processed a request.");
var stream = await container.GetBlockBlobReference({Infer file name from request here}).OpenReadAsync();
return new HttpResponseMessage()
{
StatusCode = HttpStatusCode.OK,
Content = new StreamContent(stream)
};
}
}
当我尝试运行此程序时,出现以下错误。
运行:Microsoft.Azure.WebJobs.Host:错误索引方法 'UIHandler.Run'。 Microsoft.Azure.WebJobs.Host:无法绑定参数 “容器”以键入CloudBlobContainer。确保参数类型 绑定支持。如果您使用的是绑定扩展名(例如 ServiceBus,Timer等),以确保您已致电注册 启动代码中扩展名的方法(例如 config.UseServiceBus(),config.UseTimers()等)。
我正在使用Azure Functions2。我从网络上看不到如何为此设置浏览扩展。 Iv'e还研究了输入和输出绑定。当您使用似乎仅存在于JSON中的C#时,我不明白是什么使参数输入或输出受到约束。
我需要对应的JSON文件吗?如果是这样,它叫什么去了。
预先感谢
答案 0 :(得分:4)
看看multiprocessing.Array
。那里的第一个示例显示了如何读取blob流,只需将Queue Trigger替换为HTTP触发器即可,例如
[FunctionName("UIHandler")]
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = "{name}")] HttpRequest req,
string name,
TraceWriter log,
[Blob("samples-workitems/{name}", FileAccess.Read)] Stream stream)
{
log.Info($"C# HTTP trigger function processed a request for {name}.");
return new HttpResponseMessage()
{
StatusCode = HttpStatusCode.OK,
Content = new StreamContent(stream)
};
}