Я пытаюсь обработать ошибки на уровне приложения в Genexus Ev1 (генератор C #), чтобы при возникновении исключения оно могло быть зарегистрировано.
При поиске в Интернете требование может быть решено с помощью:
https://docs.microsoft.com/en-us/aspnet/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/aspnet-error-handling
Добавление страницы 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
Код выше (и многие другие варианты) не работает.
Полагаю, все в порядке, поскольку исключение сервера очищается при достижении страницей ошибок выполнения этого кода, поэтому исключение равно нулю, поэтому файл 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);
}
}
}
Есть кто-нибудь, кто уже пытался сделать это в GeneXus?
Кто-нибудь может уточнить, что я делаю не так?