コード例 #1
0
ファイル: HttpListener.cs プロジェクト: gmcclelland90/FAP
        private void SendErrorPage(Exception exception)
        {
            var httpException = exception as HttpException;
            var response      = HttpContext.Current.Response;

            response.Status = httpException != null ? httpException.Code : HttpStatusCode.InternalServerError;
            response.Reason = exception.Message;
            response.Body.SetLength(0);

            var args = new ErrorPageEventArgs(HttpContext.Current)
            {
                Exception = exception
            };

            ErrorPageRequested(this, args);

            try
            {
                var generator = new ResponseWriter();
                if (args.IsHandled)
                {
                    generator.Send(HttpContext.Current, response);
                }
                else
                {
                    generator.SendErrorPage(HttpContext.Current, response, exception);
                }
            }
            catch (Exception err)
            {
                _logger.Error("Failed to display error page", err);
            }
        }
コード例 #2
0
ファイル: Server.cs プロジェクト: RainsSoft/HttpWebServer
        /// <summary>
        /// An error have occurred and we need to send a result pack to the client
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="exception">The exception.</param>
        /// <remarks>
        /// Invoke base class (<see cref="Server"/>) to send the contents
        /// of <see cref="IHttpContext.Response"/>.
        /// </remarks>
        protected virtual void DisplayErrorPage(IHttpContext context, Exception exception)
        {
            var httpException = exception as HttpException;

            if (httpException != null)
            {
                context.Response.Reason = httpException.Code.ToString();
                context.Response.Status = httpException.Code;
            }
            else
            {
                context.Response.Reason = "Internal Server Error";
                context.Response.Status = HttpStatusCode.InternalServerError;
            }


            var args = new ErrorPageEventArgs(context)
            {
                Exception = exception
            };

            ErrorPageRequested(this, args);

            var writer = HttpFactory.Current.Get <ResponseWriter>();

            if (args.IsHandled)
            {
                writer.Send(context, context.Response);
            }
            else
            {
                writer.SendErrorPage(context, context.Response, exception);
                args.IsHandled = true;
            }
        }
コード例 #3
0
        private void ErrorPage(IRequest request, IResponse response, HttpException exception)
        {
            response.Status = exception.Code;
            response.Reason = exception.Message;
            response.Body.SetLength(0);

            var args = new ErrorPageEventArgs(HttpContext.Current, request, response);

            args.Exception = exception;
            ErrorPageRequested(this, args);

            // Add default error body.
            if (!args.IsHandled)
            {
                string htmlTemplate = "<html><head><title>{1}</title></head><body>Error {0}: {1}</body></html>";
                byte[] body         = Encoding.UTF8.GetBytes(string.Format(htmlTemplate, (int)response.Status, response.Reason));
                response.Body.Write(body, 0, body.Length);
            }

            try
            {
                var generator = new ResponseWriter();
                generator.Send(HttpContext.Current, response);
            }
            catch (Exception err)
            {
#if DEBUG
                if (ExceptionThrown.GetInvocationList().Length == 1)
                {
                    throw;
                }
#endif
                ExceptionThrown(this, new ExceptionEventArgs(err));
            }
        }
コード例 #4
0
ファイル: Server.cs プロジェクト: hamzaet2003/videobrowser
        private void SendErrorPage(RequestEventArgs e, Exception err)
        {
            var args = new ErrorPageEventArgs(e.Context, e.Request, e.Response)
            {
                Exception = err
            };

            ErrorPageRequested(this, args);
            e.IsHandled = true;

            // use a ugly default error page.
            if (!args.IsHandled)
            {
#if DEBUG
                byte[] body = Encoding.UTF8.GetBytes(err != null ? err.ToString() : e.Response.Reason);
#else
                byte[] body = Encoding.UTF8.GetBytes(e.Response.Reason);
#endif
                e.Response.Body.Write(body, 0, body.Length);
            }

            SendResponse(e.Context, args.Request, args.Response);
        }
コード例 #5
0
ファイル: WebServer.cs プロジェクト: Rawwar13/YAMS
 static void myServer_ErrorPageRequested(object sender, ErrorPageEventArgs e)
 {
     Database.AddLog(e.Exception.Message, "web", "error");
     e.Response.Reason = "Error - YAMS";
     e.Response.Connection.Type = ConnectionType.Close;
     byte[] buffer = Encoding.UTF8.GetBytes("<h1>500 Internal Server Error</h1><p>" + e.Exception.Message + "</p><p>" + e.Exception.Source + "</p><p>" + e.Exception.StackTrace + "</p><p>" + e.Exception.InnerException.StackTrace + "</p>");
     e.Response.Body.Write(buffer, 0, buffer.Length);
 }
コード例 #6
0
ファイル: Server.cs プロジェクト: RainsSoft/HttpWebServer
 private void Listener_OnErrorPage(object sender, ErrorPageEventArgs e)
 {
     _server = this;
     DisplayErrorPage(e.Context, e.Exception);
     e.IsHandled = true;
 }
コード例 #7
0
		private void ErrorPage(IRequest request, IResponse response, HttpException exception)
		{
			response.Status = exception.Code;
			response.Reason = exception.Message;
			response.Body.SetLength(0);

			var args = new ErrorPageEventArgs(HttpContext.Current, request, response);
			args.Exception = exception;
			ErrorPageRequested(this, args);

			// Add default error body.
			if (!args.IsHandled)
			{
				string htmlTemplate = "<html><head><title>{1}</title></head><body>Error {0}: {1}</body></html>";
				byte[] body = Encoding.UTF8.GetBytes(string.Format(htmlTemplate, (int) response.Status, response.Reason));
				response.Body.Write(body, 0, body.Length);
			}

			try
			{
				var generator = new ResponseWriter();
				generator.Send(HttpContext.Current, response);
			}
			catch (Exception err)
			{
#if DEBUG
				if (ExceptionThrown.GetInvocationList().Length == 1)
					throw;
#endif
				ExceptionThrown(this, new ExceptionEventArgs(err));
			}
		}
コード例 #8
0
ファイル: Server.cs プロジェクト: rafavg77/MissVenom
 private void Listener_OnErrorPage(object sender, ErrorPageEventArgs e)
 {
     _server = this;
     DisplayErrorPage(e.Context, e.Exception);
     e.IsHandled = true;
 }
コード例 #9
0
ファイル: Server.cs プロジェクト: rafavg77/MissVenom
        /// <summary>
        /// An error have occurred and we need to send a result pack to the client
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="exception">The exception.</param>
        /// <remarks>
        /// Invoke base class (<see cref="Server"/>) to send the contents
        /// of <see cref="IHttpContext.Response"/>.
        /// </remarks>
        protected virtual void DisplayErrorPage(IHttpContext context, Exception exception)
        {
            var httpException = exception as HttpException;
            if (httpException != null)
            {
                context.Response.Reason = httpException.Code.ToString();
                context.Response.Status = httpException.Code;
            }
            else
            {
                context.Response.Reason = "Internal Server Error";
                context.Response.Status = HttpStatusCode.InternalServerError;
            }


            var args = new ErrorPageEventArgs(context) {Exception = exception};
            ErrorPageRequested(this, args);

            var writer = HttpFactory.Current.Get<ResponseWriter>();
            if (args.IsHandled)
                writer.Send(context, context.Response);
            else
            {
                writer.SendErrorPage(context, context.Response, exception);
                args.IsHandled = true;
            }
        }
コード例 #10
0
ファイル: Server.cs プロジェクト: hamzaet2003/videobrowser
 private void OnErrorPage(object sender, ErrorPageEventArgs e)
 {
     _server = this;
     ErrorPageRequested(this, e);
 }
コード例 #11
0
		private void SendErrorPage(RequestEventArgs e, Exception err)
		{
			var args = new ErrorPageEventArgs(e.Context, e.Request, e.Response) {Exception = err};
			ErrorPageRequested(this, args);
			e.IsHandled = true;

			// use a ugly default error page.
			if (!args.IsHandled)
			{
#if DEBUG
				byte[] body = Encoding.UTF8.GetBytes(err != null ? err.ToString() : e.Response.Reason);
#else
                byte[] body = Encoding.UTF8.GetBytes(e.Response.Reason);
#endif
				e.Response.Body.Write(body, 0, body.Length);
			}

			SendResponse(e.Context, args.Request, args.Response);
		}
コード例 #12
0
		private void OnErrorPage(object sender, ErrorPageEventArgs e)
		{
			_server = this;
			ErrorPageRequested(this, e);
		}
コード例 #13
0
ファイル: HttpListener.cs プロジェクト: rafavg77/MissVenom
        private void SendErrorPage(Exception exception)
        {
            var httpException = exception as HttpException;
            var response = HttpContext.Current.Response;
            response.Status = httpException != null ? httpException.Code : HttpStatusCode.InternalServerError;
            response.Reason = exception.Message;

            if (response.Body.CanWrite)
                response.Body.SetLength(0);

            var args = new ErrorPageEventArgs(HttpContext.Current) {Exception = exception};
            ErrorPageRequested(this, args);

            try
            {
                var generator = new ResponseWriter();
                if (args.IsHandled)
                    generator.Send(HttpContext.Current, response);
                else
                    generator.SendErrorPage(HttpContext.Current, response, exception);
            }
            catch (Exception err)
            {
                _logger.Error("Failed to display error page", err);
            }
        }