internal static BadHttpRequestException GetException(RequestRejectionReason reason, string detail)
        {
            BadHttpRequestException ex;

            switch (reason)
            {
            case RequestRejectionReason.InvalidRequestLine:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason, detail), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.InvalidRequestTarget:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason, detail), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.InvalidRequestHeader:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason, detail), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.InvalidContentLength:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason, detail), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.UnrecognizedHTTPVersion:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason, detail), StatusCodes.Status505HttpVersionNotsupported, reason);
                break;

            case RequestRejectionReason.FinalTransferCodingNotChunked:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason, detail), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.LengthRequired:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason, detail), StatusCodes.Status411LengthRequired, reason);
                break;

            case RequestRejectionReason.LengthRequiredHttp10:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason, detail), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.InvalidHostHeader:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason, detail), StatusCodes.Status400BadRequest, reason);
                break;

            default:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason, detail), StatusCodes.Status400BadRequest, reason);
                break;
            }
            return(ex);
        }
        internal static BadHttpRequestException GetException(RequestRejectionReason reason)
        {
            BadHttpRequestException ex;

            switch (reason)
            {
            case RequestRejectionReason.InvalidRequestHeadersNoCRLF:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.InvalidRequestLine:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.MalformedRequestInvalidHeaders:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.MultipleContentLengths:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.UnexpectedEndOfRequestContent:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.BadChunkSuffix:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.BadChunkSizeData:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.ChunkedRequestIncomplete:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.InvalidCharactersInHeaderName:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.RequestLineTooLong:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status414UriTooLong, reason);
                break;

            case RequestRejectionReason.HeadersExceedMaxTotalSize:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status431RequestHeaderFieldsTooLarge, reason);
                break;

            case RequestRejectionReason.TooManyHeaders:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status431RequestHeaderFieldsTooLarge, reason);
                break;

            case RequestRejectionReason.RequestBodyTooLarge:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status413PayloadTooLarge, reason);
                break;

            case RequestRejectionReason.RequestHeadersTimeout:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status408RequestTimeout, reason);
                break;

            case RequestRejectionReason.RequestBodyTimeout:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status408RequestTimeout, reason);
                break;

            case RequestRejectionReason.OptionsMethodRequired:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status405MethodNotAllowed, reason, HttpMethods.Options);
                break;

            case RequestRejectionReason.ConnectMethodRequired:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status405MethodNotAllowed, reason, HttpMethods.Connect);
                break;

            case RequestRejectionReason.MissingHostHeader:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.MultipleHostHeaders:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.InvalidHostHeader:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status400BadRequest, reason);
                break;

            case RequestRejectionReason.UpgradeRequestCannotHavePayload:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status400BadRequest, reason);
                break;

            default:
                ex = new BadHttpRequestException(GetRejectionReasonMessage(reason), StatusCodes.Status400BadRequest, reason);
                break;
            }
            return(ex);
        }