Я пытаюсь обрабатывать ошибки на уровне приложения в Genexus Ev1 (генератор С#), поэтому при возникновении исключения его можно зарегистрировать.
Поиск в Интернете обнаружил, что это требование можно решить следующим образом:
добавление страницы CustomError на уровне web.config работает нормально, но я не могу получить информацию сервера об ошибке на странице. Переменная &ErrorMsg, показанная ниже, всегда возвращает пустое значение.
Event Start
&ErrorMsg.SetEmpty()
CSHARP System.Web.HttpServerUtility Server = System.Web.HttpContext.Current.Server;
CSHARP Exception ex = Server.GetLastError();
CSHARP if (ex != null) {
CSHARP ex = ex.GetBaseException();
CSHARP [!&ErrorMsg!] = ex.ToString();
CSHARP }
EndEvent
Приведенный выше код (и многие другие варианты) не работает.
Я предполагаю, что это нормально, потому что исключение сервера очищается, когда достигается страница ошибки, выполняющая этот код, поэтому исключение равно null, тогда файл Global.asax должен быть настроен для перехвата и передачи исключения
Эта проблема:
В веб-приложениях GeneXus нет файла global.asax, поэтому добавление его вручную с выполнением кода ниже также не работает.
<%@ language="C#" %>
<script runat="server">
void Application_Error(object sender, EventArgs e){
// Code that runs when an unhandled error occurs.
// Get last error from the server
Exception exc = Server.GetLastError();
if (exc is HttpUnhandledException){
if (exc.InnerException != null){
exc = new Exception(exc.InnerException.Message);
Server.Transfer("ErrorPageLog.aspx?handler=Application_Error%20-%20Global.asax",
true);
}
}
}
Theres anyone who have tried to do this in GeneXus already? Anyone can clarify what I'm doing wrong?