我已经使用MVC在Asp.net Core 2中创建了一个新应用程序。
然后在HomeController中打开错误操作方法
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
我既不能理解Activity也不能理解HttpContext.TraceIdentifier。
让我感到更讨厌的是Activity.Current( Activity.Current?.Id )之后的问号(?)。一些新语法?
答案 0 :(得分:1)
?
是null conditional operator。这是c#6中的一项新功能,使空检查更加容易。
Activity.Current?.Id
和HttpContext.TraceIdentifier
在此情况下是唯一的跟踪ID,因此您可以将请求与日志和遥测相关联。
通常,如果您不使用application insights或managing activities yourself,则Activity.Current
将为空,因此?
存在。