58 lines
2.3 KiB
C#
58 lines
2.3 KiB
C#
using System;
|
|
|
|
namespace EmbedIO
|
|
{
|
|
/// <summary>
|
|
/// <para>Represents an exception that results in a particular
|
|
/// HTTP response to be sent to the client.</para>
|
|
/// <para>This interface is meant to be implemented
|
|
/// by classes derived from <see cref="Exception" />.</para>
|
|
/// <para>Either as message or a data object can be attached to
|
|
/// the exception; which one, if any, is sent to the client
|
|
/// will depend upon the handler used to send the response.</para>
|
|
/// </summary>
|
|
/// <seealso cref="HttpExceptionHandlerCallback"/>
|
|
/// <seealso cref="HttpExceptionHandler"/>
|
|
public interface IHttpException
|
|
{
|
|
/// <summary>
|
|
/// Gets the response status code for a HTTP exception.
|
|
/// </summary>
|
|
int StatusCode { get; }
|
|
|
|
/// <summary>
|
|
/// Gets the stack trace of a HTTP exception.
|
|
/// </summary>
|
|
string StackTrace { get; }
|
|
|
|
/// <summary>
|
|
/// <para>Gets a message that can be included in the response triggered
|
|
/// by a HTTP exception.</para>
|
|
/// <para>Whether the message is actually sent to the client will depend
|
|
/// upon the handler used to send the response.</para>
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// <para>Do not rely on <see cref="Exception.Message"/> to implement
|
|
/// this property if you want to support <see langword="null"/> messages,
|
|
/// because a default message will be supplied by the CLR at throw time
|
|
/// when <see cref="Exception.Message"/> is <see langword="null"/>.</para>
|
|
/// </remarks>
|
|
string? Message { get; }
|
|
|
|
/// <summary>
|
|
/// <para>Gets an object that can be serialized and included
|
|
/// in the response triggered by a HTTP exception.</para>
|
|
/// <para>Whether the object is actually sent to the client will depend
|
|
/// upon the handler used to send the response.</para>
|
|
/// </summary>
|
|
object? DataObject { get; }
|
|
|
|
/// <summary>
|
|
/// Sets necessary headers, as required by the nature
|
|
/// of the HTTP exception (e.g. <c>Location</c> for
|
|
/// <see cref="HttpRedirectException" />).
|
|
/// </summary>
|
|
/// <param name="context">The HTTP context of the response.</param>
|
|
void PrepareResponse(IHttpContext context);
|
|
}
|
|
} |