diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2013-01-23 17:44:03 -0800 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2013-01-23 17:44:03 -0800 |
commit | 9cccb5d1976e4753daf0ff12fc93268eaa1f541b (patch) | |
tree | 11f20540559fd13a230bd154052f11304adec13d /src | |
parent | f04d5ca8396bdb0d09b0fea4e22d4e96c4fa8ad2 (diff) | |
download | DotNetOpenAuth-9cccb5d1976e4753daf0ff12fc93268eaa1f541b.zip DotNetOpenAuth-9cccb5d1976e4753daf0ff12fc93268eaa1f541b.tar.gz DotNetOpenAuth-9cccb5d1976e4753daf0ff12fc93268eaa1f541b.tar.bz2 |
OpenIdProviderWebForms now builds.
Diffstat (limited to 'src')
-rw-r--r-- | src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs b/src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs index b342611..947a971 100644 --- a/src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs +++ b/src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs @@ -385,22 +385,38 @@ namespace DotNetOpenAuth.Messaging { return new HttpResponseMessageActionResult(response); } - public static void Send(this HttpResponseMessage response, HttpContextBase context = null) { + public static async Task SendAsync(this HttpResponseMessage response, HttpResponseBase responseContext = null, CancellationToken cancellationToken = default(CancellationToken)) { Requires.NotNull(response, "response"); - context = context ?? new HttpContextWrapper(HttpContext.Current); - Verify.Operation(context != null, MessagingStrings.HttpContextRequired); + if (responseContext == null) { + ErrorUtilities.VerifyHttpContext(); + responseContext = new HttpResponseWrapper(HttpContext.Current.Response); + } - context.Response.StatusCode = (int)response.StatusCode; - context.Response.StatusDescription = response.ReasonPhrase; + if (!cancellationToken.CanBeCanceled) { + cancellationToken = responseContext.ClientDisconnectedToken; + } + + responseContext.StatusCode = (int)response.StatusCode; + responseContext.StatusDescription = response.ReasonPhrase; foreach (var header in response.Headers) { foreach (var value in header.Value) { - context.Response.AddHeader(header.Key, value); + responseContext.AddHeader(header.Key, value); } } if (response.Content != null) { - response.Content.CopyToAsync(context.Response.OutputStream).Wait(); + await response.Content.CopyToAsync(responseContext.OutputStream).ConfigureAwait(false); + } + } + + public static void Send(this HttpResponseMessage response, HttpContextBase context = null) { + Requires.NotNull(response, "response"); + if (context == null) { + ErrorUtilities.VerifyHttpContext(); + context = new HttpContextWrapper(HttpContext.Current); } + + SendAsync(response, context.Response).GetAwaiter().GetResult(); } internal static void DisposeIfNotNull(this IDisposable disposable) { |