diff options
Diffstat (limited to 'samples/OAuthConsumer/SampleWcf.aspx.cs')
-rw-r--r-- | samples/OAuthConsumer/SampleWcf.aspx.cs | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/samples/OAuthConsumer/SampleWcf.aspx.cs b/samples/OAuthConsumer/SampleWcf.aspx.cs index d56a161..d0f69f8 100644 --- a/samples/OAuthConsumer/SampleWcf.aspx.cs +++ b/samples/OAuthConsumer/SampleWcf.aspx.cs @@ -7,6 +7,8 @@ using System.ServiceModel; using System.ServiceModel.Channels; using System.ServiceModel.Security; + using System.Threading.Tasks; + using System.Web; using System.Web.UI.WebControls; using DotNetOpenAuth; using DotNetOpenAuth.ApplicationBlock; @@ -19,11 +21,11 @@ /// Sample consumer of our Service Provider sample's WCF service. /// </summary> public partial class SampleWcf : System.Web.UI.Page { - protected void Page_Load(object sender, EventArgs e) { + protected async void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Session["WcfTokenManager"] != null) { WebConsumer consumer = this.CreateConsumer(); - var accessTokenMessage = consumer.ProcessUserAuthorization(); + var accessTokenMessage = await consumer.ProcessUserAuthorizationAsync(new HttpRequestWrapper(Request), Response.ClientDisconnectedToken); if (accessTokenMessage != null) { Session["WcfAccessToken"] = accessTokenMessage.AccessToken; this.authorizationLabel.Text = "Authorized! Access token: " + accessTokenMessage.AccessToken; @@ -32,7 +34,7 @@ } } - protected void getAuthorizationButton_Click(object sender, EventArgs e) { + protected async void getAuthorizationButton_Click(object sender, EventArgs e) { WebConsumer consumer = this.CreateConsumer(); UriBuilder callback = new UriBuilder(Request.Url); callback.Query = null; @@ -43,37 +45,38 @@ var requestParams = new Dictionary<string, string> { { "scope", scope }, }; - var response = consumer.PrepareRequestUserAuthorization(callback.Uri, requestParams, null); - consumer.Channel.Send(response); + var response = await consumer.PrepareRequestUserAuthorizationAsync(callback.Uri, requestParams, null, Response.ClientDisconnectedToken); + var responseMessage = await consumer.Channel.PrepareResponseAsync(response, Response.ClientDisconnectedToken); + await responseMessage.SendAsync(new HttpResponseWrapper(Response), Response.ClientDisconnectedToken); } - protected void getNameButton_Click(object sender, EventArgs e) { + protected async void getNameButton_Click(object sender, EventArgs e) { try { - this.nameLabel.Text = this.CallService(client => client.GetName()); + this.nameLabel.Text = await this.CallServiceAsync(client => client.GetName()); } catch (SecurityAccessDeniedException) { this.nameLabel.Text = "Access denied!"; } } - protected void getAgeButton_Click(object sender, EventArgs e) { + protected async void getAgeButton_Click(object sender, EventArgs e) { try { - int? age = this.CallService(client => client.GetAge()); + int? age = await this.CallServiceAsync(client => client.GetAge()); this.ageLabel.Text = age.HasValue ? age.Value.ToString(CultureInfo.CurrentCulture) : "not available"; } catch (SecurityAccessDeniedException) { this.ageLabel.Text = "Access denied!"; } } - protected void getFavoriteSites_Click(object sender, EventArgs e) { + protected async void getFavoriteSites_Click(object sender, EventArgs e) { try { - string[] favoriteSites = this.CallService(client => client.GetFavoriteSites()); + string[] favoriteSites = await this.CallServiceAsync(client => client.GetFavoriteSites()); this.favoriteSitesLabel.Text = string.Join(", ", favoriteSites); } catch (SecurityAccessDeniedException) { this.favoriteSitesLabel.Text = "Access denied!"; } } - private T CallService<T>(Func<DataApiClient, T> predicate) { + private async Task<T> CallServiceAsync<T>(Func<DataApiClient, T> predicate) { DataApiClient client = new DataApiClient(); var serviceEndpoint = new MessageReceivingEndpoint(client.Endpoint.Address.Uri, HttpDeliveryMethods.AuthorizationHeaderRequest | HttpDeliveryMethods.PostRequest); var accessToken = Session["WcfAccessToken"] as string; @@ -81,10 +84,10 @@ throw new InvalidOperationException("No access token!"); } WebConsumer consumer = this.CreateConsumer(); - WebRequest httpRequest = consumer.PrepareAuthorizedRequest(serviceEndpoint, accessToken); + var httpRequest = await consumer.PrepareAuthorizedRequestAsync(serviceEndpoint, accessToken, Response.ClientDisconnectedToken); HttpRequestMessageProperty httpDetails = new HttpRequestMessageProperty(); - httpDetails.Headers[HttpRequestHeader.Authorization] = httpRequest.Headers[HttpRequestHeader.Authorization]; + httpDetails.Headers[HttpRequestHeader.Authorization] = httpRequest.Headers.Authorization.ToString(); using (OperationContextScope scope = new OperationContextScope(client.InnerChannel)) { OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpDetails; return predicate(client); |