diff options
Diffstat (limited to 'samples/OpenIdProviderWebForms/Provider.ashx.cs')
-rw-r--r-- | samples/OpenIdProviderWebForms/Provider.ashx.cs | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/samples/OpenIdProviderWebForms/Provider.ashx.cs b/samples/OpenIdProviderWebForms/Provider.ashx.cs index f8fa4a3..7022d80 100644 --- a/samples/OpenIdProviderWebForms/Provider.ashx.cs +++ b/samples/OpenIdProviderWebForms/Provider.ashx.cs @@ -1,7 +1,13 @@ namespace OpenIdProviderWebForms { + using System; + using System.Threading; + using System.Threading.Tasks; using System.Web; using System.Web.SessionState; + using DotNetOpenAuth.ApplicationBlock; + using DotNetOpenAuth.Messaging; using DotNetOpenAuth.OpenId.Provider; + using OpenIdProviderWebForms.Code; /// <summary> /// A fast OpenID message handler that responds to OpenID messages @@ -12,13 +18,14 @@ /// 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 bool IsReusable { + public class Provider : HttpAsyncHandlerBase, IRequiresSessionState { + public override bool IsReusable { get { return true; } } - public void ProcessRequest(HttpContext context) { - IRequest request = ProviderEndpoint.Provider.GetRequest(); + protected override async Task ProcessRequestAsync(HttpContext context) { + var providerEndpoint = new ProviderEndpoint(); + 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,10 +58,12 @@ // 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 HttpContextWrapper(context)); } } } |