azure-functions - 生产中的 Azure Functions 异常
问题描述
有没有办法更好地处理生产部署中返回的异常?
例如,在下面,BadRequestObjectResult 最终显示带有堆栈跟踪的异常。虽然在开发中确实很有帮助,但在生产中,这可能会让攻击者深入了解该功能——我想避免这种情况。
我可以编写自己的包装器 - 但似乎这是应该更好地控制的东西。
我还想以同样的方式处理未处理的异常(就像 ASP-.NET 一样,比如 UseDeveloperExceptionPage)
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
namespace AzureFunctionExcpetion
{
public static class Function1 :
{
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
try
{
throw new Exception("exception thrown");
return new OkObjectResult("Test Response from function 1");
}
catch (Exception ex)
{
return new BadRequestObjectResult(ex);
}
}
}
}
解决方案
更新 0617:
对于您的原始问题,您可以使用C# preprocessor directives。
如下代码:
public static class Function1
{
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
try
{
throw new Exception("exception thrown");
return new OkObjectResult("Test Response from function 1");
}
catch (Exception ex)
{
#if DEBUG
return new BadRequestObjectResult(ex);
#else
return new BadRequestObjectResult("this is a bad request...");
#endif
}
}
}
然后在调试时,开发者可以看到详细的错误信息;在生产中,最终用户只会看到“这是一个错误的请求......”这样的错误。
对于你的新问题UseDeveloperExceptionPage
,我会尝试使用类似的东西,但不确定 azure 函数中是否有类似的东西(我认为在try catch
这里使用应该是一个好习惯。)。当有任何发现时,我会及时通知您。
原答案:
请根据此文档启用 Azure 功能的应用程序洞察力。
然后,您可以使用 LogError 方法ILogger
将异常写入应用程序洞察力。最终用户看不到错误详细信息。
推荐阅读
- maven - 如何在 Cassandra 二进制发行版上运行单元测试
- c# - 将即兴对象作为类返回?
- automapper - 使用 AutoMapper 时出现以下错误
- fabricjs - FabricJS iText 对象的文本在 Android 上未更改
- javascript - 使用 Angular 模拟 API 调用的 Sinon.JS
- shell - shell脚本中意外标记else附近的语法错误
- chirp - ImportError:无法导入名称 chirp_connect_set_config
- docker - 如何删除所有 docker 容器?
- c++ - C头文件可以被视为接口吗?
- ios - 缩放上的核心绘图小刻度标签