Following on from my initial post on how to connect to the WebsitePanel API from ASP.net, I will demonstrate how to write data to the API by creating a new WebsitePanel user account.
As before, my example is a simple ASP.Net Webform. For details of prerequisites and the development environment I am using, please read the first post.
HTML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | <fieldset> <legend>Create User</legend> <p>Fields in <b>bold</b> are required.</p> <table> <tr> <td>Owner:</td> <td><asp:DropDownList ID="ddlOwner" runat="server" /></td> </tr> <tr> <td>Load Error:</td> <td><asp:Literal ID="ltlLoadError" runat="server" /></td> </tr> <tr> <td><b>Send Email Alert</b></td> <td><asp:CheckBox ID="chkSendEmail" runat="server" /></td> </tr> <tr> <td colspan="2"><hr /></td> </tr> <tr> <td><b>Role</b></td> <td> <asp:DropDownList ID="ddlRole" runat="server"> <asp:ListItem Text="Administrator" Value="1" /> <asp:ListItem Text="Reseller" Value="2" /> <asp:ListItem Text="User" Value="3" /> </asp:DropDownList> </td> </tr> <tr> <td><b>Status</b></td> <td> <asp:DropDownList ID="ddlStatus" runat="server"> <asp:ListItem Text="Active" Value="1" /> <asp:ListItem Text="Suspended" Value="2" /> <asp:ListItem Text="Cancelled" Value="3" /> <asp:ListItem Text="Pending" Value="4" /> </asp:DropDownList> </td> </tr> <tr> <td><b>Is Demo</b></td> <td><asp:CheckBox ID="chkIsDemo" runat="server" /></td> </tr> <tr> <td><b>Username</b></td> <td><asp:TextBox ID="txtUsername" Width="400" runat="server" /></td> </tr> <tr> <td><b>Password</b></td> <td><asp:TextBox ID="txtPassword" Width="400" runat="server" /></td> </tr> <tr> <td><b>First name</b></td> <td><asp:TextBox ID="txtFirstname" Width="400" runat="server" /></td> </tr> <tr> <td><b>Last Name</b></td> <td><asp:TextBox ID="txtLastname" Width="400" runat="server" /></td> </tr> <tr> <td><b>Email</b></td> <td><asp:TextBox ID="txtEmail" Width="400" runat="server" /></td> </tr> <!-- Optional Parameters --> <tr> <td>Company Name</td> <td><asp:TextBox ID="txtCompanyName" Width="400" runat="server" /></td> </tr> <tr> <td>Address</td> <td><asp:TextBox ID="txtAddress" Width="400" runat="server" /></td> </tr> <tr> <td>City</td> <td><asp:TextBox ID="txtCity" Width="400" runat="server" /></td> </tr> <tr> <td>State</td> <td><asp:TextBox ID="txtState" Width="400" runat="server" /></td> </tr> <tr> <td>Zip/Postal Code</td> <td><asp:TextBox ID="txtPostcode" Width="400" runat="server" /></td> </tr> <tr> <td>Primary Phone</td> <td><asp:TextBox ID="txtPrimaryPhone" Width="400" runat="server" /></td> </tr> <tr> <td>Secondary Phone</td> <td><asp:TextBox ID="txtSecondaryPhone" Width="400" runat="server" /></td> </tr> <tr> <td>Fax</td> <td><asp:TextBox ID="txtFax" Width="400" runat="server" /></td> </tr> <tr> <td>Instant Messenger</td> <td><asp:TextBox ID="txtInstantMessenger" Width="400" runat="server" /></td> </tr> <tr> <td>SecondaryEmail</td> <td><asp:TextBox ID="txtSecondaryEmail" Width="400" runat="server" /></td> </tr> <tr> <td><b>HTML Email</b></td> <td><asp:CheckBox ID="chkHtmlEmail" runat="server" /></td> </tr> <tr> <td> </td> <td><asp:Button ID="btnCreateUser" Text="Create User" runat="server" /></td> </tr> <tr> <td colspan="2"><hr/></td> </tr> <tr> <td>Result:</td> <td><asp:Literal ID="ltlResult" runat="server" /></td> </tr> <tr> <td>Error:</td> <td><asp:Literal ID="ltlError" runat="server" /></td> </tr> </table> </fieldset> |
Code Behind:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | Imports System.Web.Services Imports Microsoft.Web.Services3 Imports WebsitePanel.EnterpriseServer Partial Class CreateUser Inherits System.Web.UI.Page #Region "Events & Initial Loading" Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then PopulateUsersDdl() End Sub Private Sub PopulateUsersDdl() ' Note: Uses userId of 1 and returns all users ' Create proxy configurator object Dim config As New EnterpriseServerProxyConfigurator() config.EnterpriseServerUrl = INSERT_WEBSITEPANEL_ENTERPRISESERVER_URL config.Username = INSERT_WEBSITEPANEL_ENTERPRISESERVER_USERNAME config.Password = INSERT_WEBSITEPANEL_ENTERPRISESERVER_PASSWORD ' Create & configure proxy object Dim users As New WebsitePanel.EnterpriseServer.esUsers() config.Configure(users) ' Perform lookup Try Dim lst As WebsitePanel.EnterpriseServer.UserInfo() = users.GetUsers(1, True) ddlOwner.DataValueField = "UserId" ddlOwner.DataTextField = "Username" ddlOwner.DataSource = lst ddlOwner.DataBind() lst = Nothing Catch ex As Exception ' If error, output and hide create button ltlLoadError.Text = ex.Message btnCreateUser.Visible = False End Try ' Clean up ' - little bit of paranoia users.Dispose() users = Nothing config = Nothing End Sub #End Region #Region "User Creation" Protected Sub btnCreateUser_Click(sender As Object, e As EventArgs) Handles btnCreateUser.Click ' Reset Output ltlError.Text = "" ltlResult.Text = "" ' Get details Dim user As New WebsitePanel.EnterpriseServer.UserInfo user.OwnerId = ddlOwner.SelectedValue ' Mandatory Parameters user.RoleId = ddlRole.SelectedValue user.StatusId = ddlStatus.SelectedValue user.IsDemo = chkIsDemo.Checked user.Username = txtUsername.Text user.Password = txtPassword.Text user.FirstName = txtFirstname.Text user.LastName = txtLastname.Text user.Email = txtEmail.Text ' Optional Parameters user.CompanyName = txtCompanyName.Text user.Address = txtAddress.Text user.City = txtCity.Text user.State = txtState.Text user.Zip = txtPostcode.Text user.PrimaryPhone = txtPrimaryPhone.Text user.SecondaryPhone = txtSecondaryPhone.Text user.Fax = txtFax.Text user.InstantMessenger = txtInstantMessenger.Text user.HtmlMail = chkHtmlEmail.Checked user.SecondaryEmail = txtSecondaryEmail.Text ' Create proxy configurator object Dim config As New EnterpriseServerProxyConfigurator() config.EnterpriseServerUrl = ConfigurationManager.AppSettings("WebsitePanelServerUrl") config.Username = ConfigurationManager.AppSettings("WebsitePanelUsername") config.Password = ConfigurationManager.AppSettings("WebsitePanelPassword") ' Create & configure proxy object Dim users As New WebsitePanel.EnterpriseServer.esUsers() config.Configure(users) ' Attempt to save Try Dim result As Int32 = users.AddUser(user, chkSendEmail.Checked) If (result > 0) Then ltlResult.Text = String.Format("New UserId: {0}", result) Else Select Case result Case -2 ltlResult.Text = "User creation failed: Invalid OwnerId specified" Case -100 ltlResult.Text = "User creation failed: Username already exists" Case -111 ltlResult.Text = "User creation failed: Username not specified" Case Else ltlResult.Text = String.Format("User creation failed: Result code of {0} returned", result) End Select End If Catch ex As Exception ltlError.Text = ex.Message End Try users = Nothing user = Nothing End Sub #End Region End Class |
If successful, the value of result will be a positive integer which is the ID of the new user account. If a negative value is returned and error has occurred and the value is the error code. The error codes I have discovered so far are:
- -2 = Invalid OwnerId specified
- -100 = Username already exists
- -111 = Username not specified
Testing Notes
- Although the API documentation states that there are 10 required parameters, I have successfully created a new user by just specifying valid values for OwnerId, RoleId, StatusId and Username
- An XML exception will occur if non-recognised values are specified for RoleId and StatusId
Leave a Reply