我有一个 Azure功能,带有 Blob商店输入。我可以使用$inputFile
变量访问输入文件,这非常简单。
为了允许动态blob选择,我传递一个config
查询参数,其中包含要选择的配置名称。
我唯一的问题是,如果有人传递了一个不存在的blob的名称, Azure功能会立即返回500错误,这对用户不是特别友好 -
对象引用未设置为对象的实例。
看起来这个错误是在我的脚本执行开始之前生成的,所以可能无法实现,但有没有办法改变这种行为,以便我可以向用户发送更有用的消息。 / p>
以下是来自 function.json 的绑定,以防万一 -
{
"bindings": [
{
"name": "req",
"type": "httpTrigger",
"direction": "in",
"authLevel": "function",
"methods": [
"get"
]
},
{
"type": "blob",
"name": "inputBlob",
"path": "configs/{config}.json",
"connection": "AzureWebJobsDashboard",
"direction": "in"
},
{
"name": "res",
"type": "http",
"direction": "out"
}
],
"disabled": false
}
答案 0 :(得分:1)
工作示例。
function.json:
{
"bindings": [
{
"name": "info",
"type": "httpTrigger",
"direction": "in",
"authLevel": "function"
},
{
"name": "inputBlob",
"type": "blob",
"direction": "in",
"path": "configs/{config}.json",
"connection": "AzureWebJobsStorage"
},
{
"name": "res",
"type": "http",
"direction": "out"
}
]
}
run.csx:
using System.Net;
public class BlobInfo
{
public string config { get; set; }
}
public static HttpResponseMessage Run(HttpRequestMessage req, BlobInfo info, string inputBlob)
{
if (inputBlob == null) {
return req.CreateResponse(HttpStatusCode.NotFound);
}
return req.CreateResponse(HttpStatusCode.OK, new {
data = $"{inputBlob}"
});
}
答案 1 :(得分:1)