Customizing HealthServiceActionPage redirection

The HealthServiceActionPage gives you a mechanism (see Action URL) by which you can declaratively define pages handling various HealthVault shell targets. However, developers frequently run into situation where they need a more dynamic way of redirecting and handling shell targets. A simple scenario is if you want users to come back to the URL they clicked after being authorized by HealthVault shell: For example, the user clicks and returns to instead of going to the default home

Here is a code snippet that illustrates how to extend the HealthServiceActionPage:

using System;
public partial class Redirect : Microsoft.Health.Web.HealthServiceActionPage {
     // We don't want this page to require log on because when we sign out,    
     // we still want this page to read the WCPage_ActionSignOut key in the     
     protected override bool LogOnRequired     
         get { return false; }    
     public const String ActionQueryStringValue = "actionqs";
     public const String DefaultURL = "";    

     protected override void OnActionApplicationAuthorizationSuccessful(string action, string actionQueryString) 
         string targetLocation;        
         string fullTargetLocation;        
         string url = Request.QueryString[ActionQueryStringValue];        
         // TODO: Validate that the URL is from home domain         
         if (url != null)        
             targetLocation = url;        
             targetLocation = DefaultURL;         
         // we assume that the query string startswith ‘?’        
         fullTargetLocation = targetLocation + actionQueryString;        

The magic is in the OnActionApplicationAuthorizationSuccessful method, which allows us to override the authorization successful target. The HealthVault SDK HealthServiceActionPage now provides us several OnAction methods that could be used to override the particular APPAUTH targets.