summaryrefslogtreecommitdiffstats
path: root/samples/OpenIdProviderWebForms/Provider.ashx.cs
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 /samples/OpenIdProviderWebForms/Provider.ashx.cs
parentf04d5ca8396bdb0d09b0fea4e22d4e96c4fa8ad2 (diff)
downloadDotNetOpenAuth-9cccb5d1976e4753daf0ff12fc93268eaa1f541b.zip
DotNetOpenAuth-9cccb5d1976e4753daf0ff12fc93268eaa1f541b.tar.gz
DotNetOpenAuth-9cccb5d1976e4753daf0ff12fc93268eaa1f541b.tar.bz2
OpenIdProviderWebForms now builds.
Diffstat (limited to 'samples/OpenIdProviderWebForms/Provider.ashx.cs')
-rw-r--r--samples/OpenIdProviderWebForms/Provider.ashx.cs28
1 files changed, 24 insertions, 4 deletions
diff --git a/samples/OpenIdProviderWebForms/Provider.ashx.cs b/samples/OpenIdProviderWebForms/Provider.ashx.cs
index f8fa4a3..8022aae 100644
--- a/samples/OpenIdProviderWebForms/Provider.ashx.cs
+++ b/samples/OpenIdProviderWebForms/Provider.ashx.cs
@@ -1,8 +1,14 @@
namespace OpenIdProviderWebForms {
+ using System;
+ using System.Threading;
+ using System.Threading.Tasks;
using System.Web;
using System.Web.SessionState;
+ using DotNetOpenAuth.Messaging;
using DotNetOpenAuth.OpenId.Provider;
+ using OpenIdProviderWebForms.Code;
+
/// <summary>
/// A fast OpenID message handler that responds to OpenID messages
/// directed at the Provider.
@@ -12,13 +18,13 @@
/// control to reduce the amount of source code in the web site. A typical Provider
/// site will have EITHER this .ashx handler OR the .aspx page -- NOT both.
/// </remarks>
- public class Provider : IHttpHandler, IRequiresSessionState {
+ public class Provider : IHttpAsyncHandler, IRequiresSessionState {
public bool IsReusable {
get { return true; }
}
- public void ProcessRequest(HttpContext context) {
- IRequest request = ProviderEndpoint.Provider.GetRequest();
+ private async Task ProcessRequestAsync(HttpContext context) {
+ IRequest request = await ProviderEndpoint.Provider.GetRequestAsync(new HttpRequestWrapper(context.Request), context.Response.ClientDisconnectedToken);
if (request != null) {
// Some OpenID requests are automatable and can be responded to immediately.
// But authentication requests cannot be responded to until something on
@@ -51,12 +57,26 @@
// We DON'T use ProviderEndpoint.SendResponse because
// that only sends responses to requests in PendingAuthenticationRequest,
// but we don't set that for associate and other non-checkid requests.
- ProviderEndpoint.Provider.Respond(request);
+ var response = await ProviderEndpoint.Provider.PrepareResponseAsync(request, context.Response.ClientDisconnectedToken);
// Make sure that any PendingAuthenticationRequest that MAY be set is cleared.
ProviderEndpoint.PendingRequest = null;
+
+ await response.SendAsync(new HttpResponseWrapper(context.Response));
}
}
}
+
+ public IAsyncResult BeginProcessRequest(HttpContext context, System.AsyncCallback cb, object extraData) {
+ return this.ProcessRequestAsync(context).ToApm(cb, extraData);
+ }
+
+ public void EndProcessRequest(IAsyncResult result) {
+ ((Task)result).Wait(); // rethrows exceptions
+ }
+
+ public void ProcessRequest(HttpContext context) {
+ this.ProcessRequestAsync(context).GetAwaiter().GetResult();
+ }
}
}