// .NET StockTrader Sample WCF Application for Benchmarking, Performance Analysis and Design Considerations for Service-Oriented Applications using System; using System.Collections.Generic; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using Trade.StockTraderWebApplicationSettings; using Trade.StockTraderWebApplicationModelClasses; using Trade.StockTraderWebApplicationServiceClient; using Trade.Utility; namespace Trade.Web { /// /// Registers a new user, performs login/authentication via Business Services. /// public partial class Register : System.Web.UI.Page { string userID; string fullName; string address; string emailAddress; string creditCard; string password; decimal openBalance; protected void Page_Load(object sender, EventArgs e) { Date.Text = DateTime.Now.ToString("f"); //configlink.HRef = "http://" + HttpContext.Current.Server.MachineName + "/" + Settings.PAGE_PATH_CONFIG; if (IsPostBack) { submitData(); } } private void submitData() { Page.Validate(); if (Page.IsValid) { RegisterMessage.ForeColor = System.Drawing.Color.Red; fullName = Input.InputText(Request["FullName"], StockTraderUtility.FULLNAME_MAX_LENGTH); address = Input.InputText(Request["Address"], StockTraderUtility.ADDRESS_MAX_LENGTH); emailAddress = Input.InputText(Request["Email"], StockTraderUtility.EMAIL_MAX_LENGTH); creditCard = Input.InputText(Request["CreditCard"], StockTraderUtility.CREDITCARD_MAX_LENGTH); userID = Input.InputText(Request["UserID"], StockTraderUtility.USERID_MAX_LENGTH); password = Input.InputText(Request["Password"], StockTraderUtility.PASSWORD_MAX_LENGTH); openBalance = Decimal.Parse(Input.InputText(Request["OpenBalance"], StockTraderUtility.OPENBALANCE_MAX_LENGTH)); AccountDataUI customer = null; try { BSLClient businessServicesClient = new BSLClient(); customer = businessServicesClient.register(userID, password, fullName, address, emailAddress, creditCard, openBalance); } catch (Exception e) { //Depending on web.config user setting just catch the duplicate key exception and display a //user-friendly message, or throw a 500 back to browser to make it easy to catch //this error from benchmark scripts. You can mark DisplayDuplicateKeyExceptions true/false //in Web.Config for this setting. if ((e.Message.Contains(StockTraderUtility.EXCEPTION_DOTNET_DUPLICATE_PRIMARY_KEY) || e.Message.ToLower().Contains(StockTraderUtility.EXCEPTION_WEBSPHERE_DUPLICATE_PRIMARY_KEY.ToLower())) && !Settings.DISPLAY_DUPLICATE_KEY_EXCEPTIONS) { RegisterMessage.Text = StockTraderUtility.EXCEPTION_MESSAGE_DUPLICATE_PRIMARY_KEY; return; } else throw; } FormsAuthentication.SetAuthCookie(customer.profileID, false); Response.Redirect(Settings.PAGE_HOME, true); } } } }