我有一个带有HTTP触发器的v2 Azure函数。有时,它将返回500,而没有其他信息。我想将其设置为记录更详细的信息,包括错误消息和堆栈跟踪。
我尝试将host.json设置如下:
{
"version": "2.0",
"logging": {
"logLevel": {
"default": "Trace"
}
}
}
,但是在本地运行时并没有得到任何更详细的信息。
由于内置的日志记录设置似乎无法使我失败,因此我正在尝试最高级别的try/catch
,但是我不知道如何同时返回状态码500和 em>和异常对象。
[FunctionName("Http-UploadFiles")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "uploadFiles")] HttpRequest request,
ILogger log)
{
try
{
var requestBody = await new StreamReader(request.Body).ReadToEndAsync();
var body = JsonConvert.DeserializeObject<JObject>(requestBody);
var inventorySetGuid = Guid.Parse(body["inventorySetGuid"].ToString());
var files = body["files"].Select(FileComponentUtilities.GetFile).ToList();
var componentsAndErrors = await FileComponentUtilities.InsertSuitableComponentFiles(files, inventorySetGuid);
return new JsonResult(componentsAndErrors, StorageFramework.Storage.SerializerSettings);
}
catch (Exception exception)
{
return new StatusCodeResult(500);
}
}
此代码返回状态码500,但不返回异常对象。我找不到合适的IActionResult
来返回带有异常对象的500。如何为此v2 Azure函数完成此操作?
答案 0 :(得分:1)
您可以返回ContentResult
,以便您设置任何状态码,内容和内容类型。
return new ContentResult
{
StatusCode = 500,
Content = "Something went wrong"
};
但是不要使用它返回您的堆栈跟踪!这是您应用程序的安全问题,有更好的方法...在功能应用程序中打开Application Insights并使用它来查看您的跟踪和错误。