summaryrefslogtreecommitdiffstats
path: root/samples/OpenIdProviderWebForms/decide.aspx.cs
diff options
context:
space:
mode:
Diffstat (limited to 'samples/OpenIdProviderWebForms/decide.aspx.cs')
-rw-r--r--samples/OpenIdProviderWebForms/decide.aspx.cs20
1 files changed, 16 insertions, 4 deletions
diff --git a/samples/OpenIdProviderWebForms/decide.aspx.cs b/samples/OpenIdProviderWebForms/decide.aspx.cs
index 88f222f..d3ef6d2 100644
--- a/samples/OpenIdProviderWebForms/decide.aspx.cs
+++ b/samples/OpenIdProviderWebForms/decide.aspx.cs
@@ -1,6 +1,7 @@
namespace OpenIdProviderWebForms {
using System;
using System.Diagnostics;
+ using System.Net;
using System.Web.Security;
using System.Web.UI;
using DotNetOpenAuth.Messaging;
@@ -15,7 +16,11 @@ namespace OpenIdProviderWebForms {
public partial class decide : Page {
protected async void Page_Load(object src, EventArgs e) {
if (ProviderEndpoint.PendingRequest == null) {
- Response.Redirect("~/");
+ // Response.Redirect(string) throws ThreadInterruptedException, and "async void Page_Load" doesn't properly catch it.
+ this.Response.RedirectLocation = "/";
+ this.Response.StatusCode = (int)HttpStatusCode.Redirect;
+ this.Context.ApplicationInstance.CompleteRequest();
+ return;
}
this.relyingPartyVerificationResultLabel.Text =
@@ -63,7 +68,7 @@ namespace OpenIdProviderWebForms {
}
protected async void Yes_Click(object sender, EventArgs e) {
- if (!Page.IsValid) {
+ if (!Page.IsValid || ProviderEndpoint.PendingRequest == null) {
return;
}
@@ -99,18 +104,25 @@ namespace OpenIdProviderWebForms {
ProviderEndpoint.PendingAnonymousRequest.IsApproved = true;
}
Debug.Assert(ProviderEndpoint.PendingRequest.IsResponseReady, "Setting authentication should be all that's necessary.");
- var response = await ProviderEndpoint.PrepareResponseAsync(this.Response.ClientDisconnectedToken);
+
+ var provider = new ProviderEndpoint();
+ var response = await provider.PrepareResponseAsync();
await response.SendAsync();
}
protected async void No_Click(object sender, EventArgs e) {
+ if (ProviderEndpoint.PendingRequest == null) {
+ return;
+ }
+
if (ProviderEndpoint.PendingAuthenticationRequest != null) {
ProviderEndpoint.PendingAuthenticationRequest.IsAuthenticated = false;
} else {
ProviderEndpoint.PendingAnonymousRequest.IsApproved = false;
}
Debug.Assert(ProviderEndpoint.PendingRequest.IsResponseReady, "Setting authentication should be all that's necessary.");
- var response = await ProviderEndpoint.PrepareResponseAsync(this.Response.ClientDisconnectedToken);
+ var provider = new ProviderEndpoint();
+ var response = await provider.PrepareResponseAsync();
await response.SendAsync();
}
}