В Global.asax я добавил этот метод, чтобы получать GUID для каждого запроса.
protected void Application_BeginRequest(object sender, EventArgs e)
{
Trace.CorrelationManager.ActivityId = Guid.NewGuid();
}
И я могу записать этот GUID в свой файл NLog.
Как я могу передать это на мою настраиваемую страницу aspx (страницу ошибок), чтобы пользователь мог отправить мне этот GUID, чтобы я мог легко просмотреть файл с ошибкой?
В файле asax.cs я попытался добавить внутрь Page_Load это
string _SessionGuid = Trace.CorrelationManager.ActivityId.ToString();
но VS сообщает об этой ошибке, хотя у меня есть ссылка на Система. Диагностика:
Error 21 'System.Web.TraceContext' does not contain a definition for 'CorrelationManager' and no extension method 'CorrelationManager' accepting a first argument of type 'System.Web.TraceContext' could be found (are you missing a using directive or an assembly reference?) C:...\ErrorPage.aspx.cs





Я решил это самостоятельно.
В HomeController у меня есть
public class HomeController : Controller
{
private readonly string _SessionGuid =
Trace.CorrelationManager.ActivityId.ToString();
....
}
И в ActionResult это
public ActionResult About()
{
Session["test"] = _SessionGuid;
....
}
Когда происходит ошибка, я перенаправляю ее в ErrorController с этим кодом внутри
public class ErrorController : Controller
{
public ActionResult Index()
{
var errGUID = (string)Session["test"];
ViewBag.ErrorMessage = errGUID;
return View();
}
}
Trace- это имущество с аналогичным названием внутри классаPage. Вы должны полностью квалифицированно называть "свой"TraceкакSystem.Diagnostics.Trace.CorrelationManager.ActivityId.ToString().