protected void Application_Error(object sender, EventArgs e) { var error = Server.GetLastError(); Server.ClearError(); HttpContext.Current.Response.ClearContent(); HttpContext.Current.Response.StatusCode = 200; WorkHere.LogException(error); }
private static void RunTimer(Uri originalUri) { //todo: low посмотреть че будет если бота заблочить или удалить чат или выкинуть его из чата Trace.WriteLine("Timer invoked"); ThreadPool.QueueUserWorkItem(state => { while (true) //todo: low узнать как узнать что скоро приложение выключится { Thread.Sleep(10000); try { if (WorkHere.GameEngine.Timer()) { //если есть ещё работы, следим что бы сервер не лёг Trace.WriteLine("Есть игры на будущее, таймер запускает сам себя"); try { using (var webClient = new WebClient()) { webClient.DownloadString( new UriBuilder(originalUri) { Path = "Timer.ashx", Query = string.Empty }.Uri); } } catch (WebException exception) { throw new WebException($"Original Uri was {originalUri}", exception); } } } catch (Exception exception) { WorkHere.LogException(exception); } //todo: low это как бы может выключиться посередине какой-нить хрени, например пользователи сохранятся, а game нет } // ReSharper disable once FunctionNeverReturns function must work till shutdown by timer }); }
public void ProcessRequest(HttpContext context) { context.Response.StatusCode = 200; var stream = context.Request.GetBufferedInputStream(); string readToEnd; using (var reader = new StreamReader(stream)) { readToEnd = reader.ReadToEnd(); //Trace.WriteLine(readToEnd); } var update = _jsonSerializer.Deserialize <Update>(new JsonTextReader(new StringReader(readToEnd))); try { TelemetryStatic.TelemetryClient = new TelemetryClient(); TelemetryStatic.TelemetryClient.Context.Operation.Name = "Update process"; if (WorkHere.GameEngine.ProcessUpdate(update)) { try { Trace.WriteLine($"Income message: {update.GetMessage().Text}"); } catch (NotSupportedException) { Trace.WriteLine(readToEnd); } } else { Trace.WriteLine(readToEnd); } } catch (Exception exception) { WorkHere.LogException(new WrapException(readToEnd, exception)); } Timer.CheckTimerRun(); }