public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("StatusCode: "); sb.Append((int)_statusCode); sb.Append(", ReasonPhrase: '"); sb.Append(ReasonPhrase ?? "<null>"); sb.Append("', Version: "); sb.Append(_version); sb.Append(", Content: "); sb.Append(_content == null ? "<null>" : _content.GetType().ToString()); sb.AppendLine(", Headers:"); HeaderUtilities.DumpHeaders(sb, _headers, _content?.Headers); if (_trailingHeaders != null) { sb.AppendLine(", Trailing Headers:"); HeaderUtilities.DumpHeaders(sb, _trailingHeaders); } return(sb.ToString()); }
public static async Task<PreventDisposeContentWrapper> CreateWrapperAsync(HttpContent wrappedContent) { if (wrappedContent == null) { return new PreventDisposeContentWrapper(new byte[0], null); } var bytes = await wrappedContent.ReadAsByteArrayAsync(); var wrapper = new PreventDisposeContentWrapper(bytes, wrappedContent.GetType()); foreach (var header in wrappedContent.Headers) { wrapper.Headers.Add(header.Key, header.Value); } return wrapper; }
public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("Method: "); sb.Append(method); sb.Append(", RequestUri: '"); sb.Append(requestUri == null ? "<null>" : requestUri.ToString()); sb.Append("', Version: "); sb.Append(version); sb.Append(", Content: "); sb.Append(content == null ? "<null>" : content.GetType().FullName); sb.Append(", Headers:\r\n"); sb.Append(HeaderUtilities.DumpHeaders(headers, content == null ? null : content.Headers)); return(sb.ToString()); }
public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("StatusCode: "); sb.Append((int)_statusCode); sb.Append(", ReasonPhrase: '"); sb.Append(ReasonPhrase ?? "<null>"); sb.Append("', Version: "); sb.Append(_version); sb.Append(", Content: "); sb.Append(_content == null ? "<null>" : _content.GetType().ToString()); sb.Append(", Headers:\r\n"); sb.Append(HeaderUtilities.DumpHeaders(_headers, _content == null ? null : _content.Headers)); return(sb.ToString()); }
public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("Method: "); sb.Append(_method); sb.Append(", RequestUri: '"); sb.Append(_requestUri == null ? "<null>" : _requestUri.ToString()); sb.Append("', Version: "); sb.Append(_version); sb.Append(", Content: "); sb.Append(_content == null ? "<null>" : _content.GetType().ToString()); sb.AppendLine(", Headers:"); HeaderUtilities.DumpHeaders(sb, _headers, _content?.Headers); return(sb.ToString()); }
public override string ToString() { StringBuilder sb = new StringBuilder(); sb.Append("StatusCode: "); sb.Append((int)statusCode); sb.Append(", ReasonPhrase: '"); sb.Append(reasonPhrase == null ? "<null>" : reasonPhrase); sb.Append("', Version: "); sb.Append(version); sb.Append(", Content: "); sb.Append(content == null ? "<null>" : content.GetType().FullName); sb.Append(", Headers:\r\n"); sb.Append(HeaderUtilities.DumpHeaders(headers, content == null ? null : content.Headers)); return(sb.ToString()); }
internal static Task CreateErrorResponseAsync(HttpContextBase httpContextBase, HttpContent responseContent, HttpRequestMessage request, Exception exception) { Contract.Assert(httpContextBase != null); Contract.Assert(responseContent != null); Contract.Assert(exception != null); Contract.Assert(request != null); HttpResponseBase httpResponseBase = httpContextBase.Response; HttpResponseMessage errorResponse = null; HttpResponseException responseException = exception as HttpResponseException; // Ensure all headers and content are cleared to eliminate any partial results. ClearContentAndHeaders(httpResponseBase); // If the exception we are handling is HttpResponseException, // that becomes the error response. if (responseException != null) { errorResponse = responseException.Response; } else { // The exception is not HttpResponseException. // Create a 500 response with content containing an explanatory message and // stack trace, subject to content negotiation and policy for error details. try { MediaTypeHeaderValue mediaType = responseContent.Headers.ContentType; string messageDetails = (mediaType != null) ? Error.Format( SRResources.Serialize_Response_Failed_MediaType, responseContent.GetType().Name, mediaType) : Error.Format( SRResources.Serialize_Response_Failed, responseContent.GetType().Name); errorResponse = request.CreateErrorResponse( HttpStatusCode.InternalServerError, new InvalidOperationException(messageDetails, exception)); // CreateErrorResponse will choose 406 if it cannot find a formatter, // but we want our default error response to be 500 always errorResponse.StatusCode = HttpStatusCode.InternalServerError; } catch { // Failed creating an HttpResponseMessage for the error response. // This can happen for missing config, missing conneg service, etc. // Create an empty error response and return a non-faulted task. CreateEmptyErrorResponse(httpResponseBase); return TaskHelpers.Completed(); } } Contract.Assert(errorResponse != null); CopyResponseStatusAndHeaders(httpContextBase, errorResponse); // The error response may return a null content if content negotiation // fails to find a formatter, or this may be an HttpResponseException without // content. In either case, cleanup and return a completed task. if (errorResponse.Content == null) { errorResponse.Dispose(); return TaskHelpers.Completed(); } // Copy the headers from the newly generated HttpResponseMessage. // We must ask the content for its content length because Content-Length // is lazily computed and added to the headers. var unused = errorResponse.Content.Headers.ContentLength; CopyHeaders(errorResponse.Content.Headers, httpContextBase); return CreateErrorResponseAsyncCore(errorResponse, httpResponseBase); }