summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2013-01-23 17:44:03 -0800
committerAndrew Arnott <andrewarnott@gmail.com>2013-01-23 17:44:03 -0800
commit9cccb5d1976e4753daf0ff12fc93268eaa1f541b (patch)
tree11f20540559fd13a230bd154052f11304adec13d /src
parentf04d5ca8396bdb0d09b0fea4e22d4e96c4fa8ad2 (diff)
downloadDotNetOpenAuth-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.cs30
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) {