【发布时间】:2017-12-05 22:42:21
【问题描述】:
按照一个非常简单的代码来玩弄 Service Fabric 中的异常处理和日志记录:
public async Task<IActionResult> Get()
{
ServiceEventSource.Current.ServiceMessage(serviceContext, $"Entered 'GetAll' method");
IActionResult result = null;
List<Customer> list = new List<Customer>();
try
{
using (CustomersContext context = new CustomersContext(connectionString))
{
list = context.Customers.Where(a => a.IsDeleted == false).ToList<Customer>();
}
result = Json(list);
throw new ArgumentException("Argument exception", new NullReferenceException("Null reference exception"));
}
catch (Exception ex)
{
result = StatusCode(StatusCodes.Status500InternalServerError);
ServiceEventSource.Current.ServiceMessage(serviceContext, $"Exception: " + JsonConvert.SerializeObject(ex));
}
finally
{
ServiceEventSource.Current.ServiceMessage(serviceContext, $"Exiting 'GetAll' method");
}
return result;
}
我的问题是:为什么开头这行代码
ServiceEventSource.Current.ServiceMessage(serviceContext, $"Entered 'GetAll' method");
以及finally块中的这行代码
ServiceEventSource.Current.ServiceMessage(serviceContext, $"Exiting 'GetAll' method");
工作正常并在诊断事件中记录条目,而这个在 catch 块中
ServiceEventSource.Current.ServiceMessage(serviceContext, $"Exception: " + JsonConvert.SerializeObject(ex));
出现以下错误:“ServiceEventSource 错误 CS0103:名称 'ServiceEventSource' 在当前上下文中不存在”?
谢谢!
【问题讨论】:
-
与其编辑问题以添加解决方案,不如将其发布为答案!不禁止回答自己的问题(甚至可以在Ask a Question 页面直接回答问题)