<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>azureproviders Wiki Rss Feed</title><link>http://azureproviders.codeplex.com/</link><description>azureproviders Wiki Rss Description</description><item><title>Updated Wiki: Adding a new profile property</title><link>http://azureproviders.codeplex.com/wikipage?title=Adding a new profile property&amp;version=2</link><description>&lt;div class="wikidoc"&gt;Adding a new profile property is not very intuitive, so I thought I would write a quick how-to on it.&lt;br /&gt;&lt;br /&gt;Let say we have a new property called &amp;quot;TaxPercentage, first of all you need to add the following line to Webpages-&amp;gt;Web.config under system.web-&amp;gt;profile-&amp;gt;properties.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;add name=&amp;quot;TaxPercentage&amp;quot; type=&amp;quot;System.String&amp;quot; defaultValue=&amp;quot;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;br /&gt;, that takes care of the ASP.NET declerative part, now for our code.&lt;br /&gt;&lt;br /&gt;First, open AzureTableStorage-&amp;gt;UserEntity.cs and add the following line in the profile region:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
public string TaxPercentage { get; set; }        
&lt;/pre&gt;&lt;br /&gt;, this defines the entity. &lt;br /&gt;&lt;br /&gt;Now we need to tell the profile provider that we have a new property too, so open WebPages-&amp;gt;Bll-&amp;gt;AzureProfileProvider.cs and add the following to the PropertyNames structure:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
   public const string TaxPercentage = &amp;quot;TaxPercentage&amp;quot;;
&lt;/pre&gt;&lt;br /&gt;Then go to the SetPropertyValues() method, there you will find a large switch block (yes, yes, bad bad bad... I must refactor this sometime. ) and add the following line:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
case PropertyNames.TaxPercentage:
   userEntity.TaxPercentage = (string)pv.PropertyValue;
   break;
&lt;/pre&gt;&lt;br /&gt;, this is the code called when you store a property.&lt;br /&gt;&lt;br /&gt;Then go to the GetPropertyValues() method, there also you will find a large switch block and add the following line:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
case PropertyNames.TaxPercentage:
   pv.PropertyValue = userEntity.TaxPercentage;
   break;
&lt;/pre&gt;&lt;br /&gt;Thats it, I will refactor this when I have some spare time, this is just too hard as it is at the moment.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Mon, 07 May 2012 09:03:48 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Adding a new profile property 20120507090348A</guid></item><item><title>Updated Wiki: Documentation</title><link>http://azureproviders.codeplex.com/documentation?version=26</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Guides&lt;/h1&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=Gettings%20started&amp;referringTitle=Documentation"&gt;Gettings started&lt;/a&gt;&lt;br /&gt; &lt;a href="http://azureproviders.codeplex.com/wikipage?title=Adding%20a%20new%20profile%20property&amp;referringTitle=Documentation"&gt;Adding a new profile property&lt;/a&gt;&lt;br /&gt;
&lt;h1&gt;Tips&lt;/h1&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=How%20to%20lower%20costs&amp;referringTitle=Documentation"&gt;How to lower costs&lt;/a&gt;&lt;br /&gt;
&lt;h1&gt;Solution&lt;/h1&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=AzureQueue%20project&amp;referringTitle=Documentation"&gt;AzureQueue project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=AzureTableStorage%20project&amp;referringTitle=Documentation"&gt;AzureTableStorage project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=CrossCuttingConcerns%20project&amp;referringTitle=Documentation"&gt;CrossCuttingConcerns project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=MultiThreadedWorkerRole%20project&amp;referringTitle=Documentation"&gt;MultiThreadedWorkerRole project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=ThreadedRoleEntryPoint%20project&amp;referringTitle=Documentation"&gt;ThreadedRoleEntryPoint project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=WebPages%20project&amp;referringTitle=Documentation"&gt;WebPages project&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h1&gt;Other&lt;/h1&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=External%20resources&amp;referringTitle=Documentation"&gt;External resources&lt;/a&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Mon, 07 May 2012 09:03:10 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20120507090310A</guid></item><item><title>Updated Wiki: Adding a new profile property</title><link>http://azureproviders.codeplex.com/wikipage?title=Adding a new profile property&amp;version=1</link><description>&lt;div class="wikidoc"&gt;Adding a new profile property is not very intuitive, so I thought I would write a quick how-to on it.&lt;br /&gt;&lt;br /&gt;Let say we have a new property called &amp;quot;TaxPercentage, first of all you need to add the following line to Webpages-&amp;gt;Web.config under system.web-&amp;gt;profile-&amp;gt;properties.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;add name=&amp;quot;TaxPercentage&amp;quot; type=&amp;quot;System.String&amp;quot; defaultValue=&amp;quot;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;, that takes care of the ASP.NET declerative part, now for our code.&lt;br /&gt;&lt;br /&gt;First, open AzureTableStorage-&amp;gt;UserEntity.cs and add the following line in the profile region:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
public string TaxPercentage { get; set; }        
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;, this defines the entity. &lt;br /&gt;&lt;br /&gt;Now we need to tell the profile provider that we have a new property too, so open WebPages-&amp;gt;Bll-&amp;gt;AzureProfileProvider.cs and add the following to the PropertyNames structure:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
   public const string TaxPercentage = &amp;quot;TaxPercentage&amp;quot;;
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then go to the SetPropertyValues() method, there you will find a large switch block (yes, yes, bad bad bad... I must refactor this sometime. ) and add the following line:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
case PropertyNames.TaxPercentage:
   userEntity.TaxPercentage = (string)pv.PropertyValue;
   break;
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;, this is the code called when you store a property.&lt;br /&gt;&lt;br /&gt;Then go to the GetPropertyValues() method, there also you will find a large switch block and add the following line:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
case PropertyNames.TaxPercentage:
   pv.PropertyValue = userEntity.TaxPercentage;
   break;
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Thats it, I will refactor this when I have some spare time, this is just too hard as it is at the moment.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Mon, 07 May 2012 09:02:38 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Adding a new profile property 20120507090238A</guid></item><item><title>Updated Wiki: Documentation</title><link>http://azureproviders.codeplex.com/documentation?version=25</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Guides&lt;/h1&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=Gettings%20started&amp;referringTitle=Documentation"&gt;Gettings started&lt;/a&gt;&lt;br /&gt;
&lt;h1&gt;Tips&lt;/h1&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=How%20to%20lower%20costs&amp;referringTitle=Documentation"&gt;How to lower costs&lt;/a&gt;&lt;br /&gt;
&lt;h1&gt;Solution&lt;/h1&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=AzureQueue%20project&amp;referringTitle=Documentation"&gt;AzureQueue project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=AzureTableStorage%20project&amp;referringTitle=Documentation"&gt;AzureTableStorage project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=CrossCuttingConcerns%20project&amp;referringTitle=Documentation"&gt;CrossCuttingConcerns project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=MultiThreadedWorkerRole%20project&amp;referringTitle=Documentation"&gt;MultiThreadedWorkerRole project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=ThreadedRoleEntryPoint%20project&amp;referringTitle=Documentation"&gt;ThreadedRoleEntryPoint project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=WebPages%20project&amp;referringTitle=Documentation"&gt;WebPages project&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h1&gt;Other&lt;/h1&gt;&lt;a href="http://azureproviders.codeplex.com/wikipage?title=External%20resources&amp;referringTitle=Documentation"&gt;External resources&lt;/a&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Tue, 31 Jan 2012 15:53:01 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20120131035301P</guid></item><item><title>Updated Wiki: How to lower costs</title><link>http://azureproviders.codeplex.com/wikipage?title=How to lower costs&amp;version=1</link><description>&lt;div class="wikidoc"&gt;This is a small guide that may help you save money when using AzureProviders. In addition you should read guides on how to save costs in general on the Azure platform.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Checking for dead worker roles&lt;/b&gt;&lt;br /&gt;The MultiThreadedWorkerRole project has one thread for each worker role, plus one &amp;quot;servant&amp;quot; thread that monitors if all the threads are ok, restarting them if they have died. This servant sleeps for &lt;i&gt;CheckDeadThreadSleepInSeconds&lt;/i&gt; (in app.config) seconds between each time it checks if the worker role threads are dead. By default it checks every 4 seconds, which in most cases is overkill increasing this could save you computing cost.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Turning off session provider&lt;/b&gt;&lt;br /&gt;If you are not using sessions, ie. your code does not use any &lt;i&gt;session&lt;a href="http://azureproviders.codeplex.com/wikipage?title=%22something%22&amp;referringTitle=How%20to%20lower%20costs"&gt;&amp;#34;something&amp;#34;&lt;/a&gt;&lt;/i&gt; code, then you can disable it by removing it from you web.config definition, this can save you computing-, and table storage transaction costs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;E-mail worker role&lt;/b&gt;&lt;br /&gt;By default the e-mail worker role checks for new e-mails to send on the queue every 60 seconds, as specified in &lt;i&gt;EmailWorkerMaxThreadSleepSeconds&lt;/i&gt; in the app.config file. In some cases letting the users wait more than a minute for an e-mail is just fine, increasing it could save you computing costs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Session-state worker role&lt;/b&gt;&lt;br /&gt;The session-state worker role has one task; to remove expired sessions from the table storage. By default it checks for expired  sessions every 60 seconds, this is probably overkill in most cases. Increasing &lt;i&gt;SessionStateWorkerMaxThreadSleepSeconds&lt;/i&gt; as defined in app.config may save you computing-, and table storage transaction costs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Azure Diagnostics logging&lt;/b&gt;&lt;br /&gt;(Only applicable for V1.7 or later) Azure Diagnostics logging is so transaction expensive that it should only be used in development, or for testing purposes, and should only be used in a production environment in very special scenarios. You can turn it off by removing its configuration from web.config and app.config plus removing the calling code from both WebRole.cs files.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Tue, 31 Jan 2012 15:52:27 GMT</pubDate><guid isPermaLink="false">Updated Wiki: How to lower costs 20120131035227P</guid></item><item><title>Updated Wiki: WebPages project</title><link>http://azureproviders.codeplex.com/wikipage?title=WebPages project&amp;version=18</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;WebPages project&lt;/h1&gt;The WebPages project is the start-up ASP.NET web application.&lt;br /&gt;
&lt;h2&gt;/Account/ActivateAccount.aspx&lt;/h2&gt;A Web page that a newly registered user needs to visit in order to sign in for the first time. An e-mail with a personal link to this page is sent after the user has registered by  &lt;i&gt;/Account/Register.aspx&lt;/i&gt;. The request parameter &amp;quot;Id&amp;quot; should contain the user id of the user that is to be activated, if not an error is displayed. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-ASfC43hrsK4/TW-OSBtMkgI/AAAAAAAAALE/WaRazFZoCbs/s1600/ActivateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;After the user has activated his account a confirmation e-mail is sent to the user.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-tBTdEptbRhw/TW-ORGUde9I/AAAAAAAAAK8/8NHG26y6JIU/s1600/AccountActivatedEmail.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Account/ChangePassword.aspx&lt;/h2&gt;A Web page that allows a user to change his/her password. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-zJKxxtro9GQ/TW-OS_FVmJI/AAAAAAAAALM/CtK-Gc_WIWs/s1600/ChangePassword.png" /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-czgwsWF2KeA/TW-OTEFVMuI/AAAAAAAAALQ/1Ajhav041HU/s1600/ChangePasswordSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;A confirmation e-mail is sent to the user after the password has been changed.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-JuCipslvq5E/TW-OUdtr5fI/AAAAAAAAALg/YqvHLR6MJcs/s1600/PasswordChangedEmail.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Account/Login.aspx&lt;/h2&gt;A Web page that allows the user to sign in using his/her username or e-mail address and password.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-6AYQtp22cwE/TW-OV96KzqI/AAAAAAAAAL0/TYMdEHZvsGk/s1600/UserSignIn.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Account/Logout.aspx&lt;/h2&gt;A Web page that signs the user out.&lt;br /&gt;
&lt;h2&gt;/Account/Register.aspx&lt;/h2&gt;A Web page that lets a user create a new account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-KlUoh0t88-4/TW-OTStjw2I/AAAAAAAAALU/me37mCKWqFc/s1600/CreateAccount.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PYPW_RlRfQE/TW-OTlWs5OI/AAAAAAAAALY/p5-EJ_LVjds/s1600/CreateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: After the user has registered an e-mail is sent with a link to &lt;i&gt;/Account/ActivateAccount.aspx&lt;/i&gt; to activate the user account and to validate the e-mail address of the user. The domain here is by default www.myapp.com, change the domain to the correct value for your development, staging, or production environment.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-ZlxpBhh7A6M/TW-YUMiidpI/AAAAAAAAAMM/kv8VyzOdLNo/s1600/ActivateAccountEmail.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Account/ResetPassword.aspx&lt;/h2&gt;A Web page that lets the user reset his/her password if they have forgotten it. The user must answer the question he/she entered when he/she created the account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-T8jwXpGh7kw/TW-PTDeMQUI/AAAAAAAAAL4/EhZvKAI-H4k/s1600/ResetPassword1.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-VWgkDMoo0Ks/TW-PThwiP2I/AAAAAAAAAL8/2RhZpRh9lAE/s1600/ResetPassword2.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-74CxmHDYWGY/TW-PT_5i0yI/AAAAAAAAAMA/Po1cm3TX0fw/s1600/ResetPassword3.png" /&gt;&lt;br /&gt;&lt;br /&gt;The new automatically generated password is sent to the users e-mail address.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-W8WDxax8usY/TW-PULhheLI/AAAAAAAAAME/QNYUJgBFBus/s1600/ResetPasswordEmail.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Account/UnlockAccount.aspx&lt;/h2&gt;A Web page that allows the user to unlock his/her user account in the case it has been locked out. After unlocking a confirmation is sent to the users e-mail address.&lt;br /&gt;
&lt;h2&gt;/Account/User.aspx&lt;/h2&gt;A Web page that shows the user profile. If the profile page belongs to the user that is viewing it the user can upload a picture and enter his/her gender. Here you can add/remove you own fields, the default fields are just there as an example. &lt;br /&gt;&lt;br /&gt;The default portrait field scales the uploaded image to a thumbnail and stores the processed image in the Azure Blob Storage. The gender field is stored in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-5f7svJgrNGM/TW-OU8jGUDI/AAAAAAAAALk/9qYo6YNx6WA/s1600/Profile.png" /&gt;&lt;br /&gt;
&lt;h3&gt;Querystring parameters&lt;/h3&gt;By default our own user profile page is displayed, if you want to see another users profile page then you can add the user name to the &amp;quot;name&amp;quot; querystring parameter, like this:&lt;br /&gt;&lt;br /&gt;http://example.com/Account/User.aspx?name=Admin&lt;br /&gt;&lt;br /&gt;The example above would show Admin&amp;#39;s user profile page.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-rmja5gJTjv8/TW-OUPCUtoI/AAAAAAAAALc/IYWrLa8LRhE/s1600/OtherUsersProfile.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Account/Web.config&lt;/h2&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h2&gt;/Admin/InitApp.aspx&lt;/h2&gt;A Web page that initializes the AzureProviders application. You need to visit this page once to create:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;There is no harm in calling this page more than once. &lt;br /&gt;
&lt;h3&gt;History of InitApp.aspx&lt;/h3&gt;In earlier versions of AzureProviders this page was removed and the code moved to &lt;i&gt;Global.asax&lt;/i&gt; or the Azure Role &lt;i&gt;OnStart()&lt;/i&gt; method, but this attempt ultimately failed because of the context of the processes than ran them, and so the &lt;i&gt;/Admin/InitApp.asp&lt;/i&gt; web page was re-implemented again. &lt;br /&gt;&lt;br /&gt;If you have a better way of doing the initialization of AzureProviders then please let me know, but make sure that you have tested that it works in staging/production first and not just your development environment, like I mistakenly did.&lt;br /&gt;
&lt;h2&gt;/Admin/Roles.aspx&lt;/h2&gt;A Web page that lists all the ASP.NET Role Provider roles.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh3.googleusercontent.com/-LmdzOr3cQNw/TW-OVG1PllI/AAAAAAAAALo/rltnxNecKs0/s1600/Roles.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Admin/Sessions.aspx&lt;/h2&gt;A Web page that lists all the active ASP.NET Session Provider sessions.&lt;br /&gt;
&lt;h2&gt;/Admin/Statistics.aspx&lt;/h2&gt;A Web page that shows the total number of registered users and the number of online users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-IS5uPtRWNRg/TW-OVcMo2pI/AAAAAAAAALs/HHBR9oouoUU/s1600/Stats.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Admin/Users.aspx&lt;/h2&gt;A Web page that lists all the ASP.NET Membership Provider users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PiiIg8zqb1A/TW-X77f7i7I/AAAAAAAAAMI/gmIiXR0zspw/s1600/Users.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Admin/Web.config&lt;/h2&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h2&gt;Email.resx&lt;/h2&gt;E-mail message resources like e-mail header and footer.&lt;br /&gt;
&lt;h2&gt;Profile.resx&lt;/h2&gt;Resources used by the ASP.NET Profile Provider.&lt;br /&gt;
&lt;h2&gt;/Bll/AzureMembershipProvider.cs&lt;/h2&gt;Business logic for a custom ASP.NET Membership Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: If you are only interested in the membership provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the membership provider deceleration from Web.config.&lt;/b&gt;&lt;br /&gt;
&lt;h2&gt;/Bll/AzureProfileProvider.cs&lt;/h2&gt;Business logic for a custom ASP.NET Profile Provider that stores all its data in the Azure Table and Blob Storage.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: If you are only interested in the profile provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the profile provider deceleration from Web.config.&lt;/b&gt;&lt;br /&gt;
&lt;h2&gt;/Bll/AzureRoleProvider.cs&lt;/h2&gt;Business logic for a custom ASP.NET Role Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: If you are only interested in the role provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the role provider deceleration from Web.config.&lt;/b&gt;&lt;br /&gt;
&lt;h2&gt;/Bll/AzureSessionStateProvider.cs&lt;/h2&gt;Business logic for a custom ASP.NET Session-State Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: If you are only interested in the session provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the session provider deceleration from Web.config.&lt;/b&gt;&lt;br /&gt;
&lt;h2&gt;/Bll/GraphicUtilities.cs&lt;/h2&gt;Business logic that lets you create thumbnails and resize images.&lt;br /&gt;
&lt;h2&gt;/Bll/InitApplication.cs&lt;/h2&gt;Business logic that creates:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;/Ccc/EncryptionUtilities.cs&lt;/h2&gt;Business logic that makes a MD5 hash from a string.&lt;br /&gt;
&lt;h2&gt;/Images/&lt;/h2&gt;Image file folder.&lt;br /&gt;
&lt;h2&gt;/Scripts/&lt;/h2&gt;JavaScript file folder.&lt;br /&gt;
&lt;h2&gt;/Styles/&lt;/h2&gt;CSS file folder.&lt;br /&gt;
&lt;h2&gt;About.aspx&lt;/h2&gt;Some information about the AzureProviders solution.&lt;br /&gt;
&lt;h2&gt;Default.aspx&lt;/h2&gt;The start page. Demo&amp;#39;s the ASP.NET Session-State Provider by showing when the user session was started.&lt;br /&gt;
&lt;h2&gt;Global.asax&lt;/h2&gt;Initializes the Azure Cloud Storage Account when the Web application starts.&lt;br /&gt;
&lt;h2&gt;Site.master&lt;/h2&gt;Master page.&lt;br /&gt;
&lt;h2&gt;Web.config&lt;/h2&gt;&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;appSettings&amp;gt;&lt;/h3&gt;Key/value&amp;#39;s:
&lt;ul&gt;&lt;li&gt;StaticKey; A static key is used instead of machiekey to encrypt passwords since machinekey changes when in development&lt;/li&gt;
&lt;li&gt;fromEmail; (default=&amp;quot;do-not-reply@example.com&amp;quot;) This is the e-mail address that will be the sender on all the e-mails sent by this application&lt;/li&gt;
&lt;li&gt;AdminName; (default=&amp;quot;Admin&amp;quot;) By default a administrator user is made and this is its sign in name&lt;/li&gt;
&lt;li&gt;AdminEmail; (default=&amp;quot;admin@example.com&amp;quot;) By default a administrator user is made and this is its e-mail&lt;/li&gt;
&lt;li&gt;AdminPassword; (default=&amp;quot;Password&amp;quot;) By default a administrator user is made and this is its password&lt;/li&gt;
&lt;li&gt;AdminQuestion; (default=&amp;quot;Color of my first car?&amp;quot;) By default a administrator user is made and this is its password retrieval question&lt;/li&gt;
&lt;li&gt;AdminAnswer; (default=&amp;quot;Kiwi&amp;quot;) By default a administrator user is made and this is its password retrieval answer&lt;/li&gt;
&lt;li&gt;AdminRoleName; (default=&amp;quot;Admins&amp;quot;) By default a role is created to hold administrators and this is its name. Admin is added to this by default&lt;/li&gt;
&lt;li&gt;ApplicationName; (default=&amp;quot;MyApp1&amp;quot;) The name of your application, should match the one in the MultiThreadedWorkerRole &lt;i&gt;app.config&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;QueueDequeueRetrySleepSeconds; (default=3600) Number of seconds to wait before retrying if a message was dequeued in the Azure Queue&lt;/li&gt;
&lt;li&gt;UseNaglingWithTable; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;
&lt;li&gt;UseNaglingWithQueue; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;authentication&amp;gt;&amp;lt;forms&amp;gt;&lt;/h3&gt;Sets the ASP.NET login page to &lt;i&gt;/Account/Login.aspx&lt;/i&gt;&lt;br /&gt;
&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;membership&amp;gt;&lt;/h3&gt;Settings for the custom ASP.NET Membership Provider.&lt;br /&gt;
&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;profile&amp;gt;&lt;/h3&gt;Settings for the custom ASP.NET Profile Provider.&lt;br /&gt;
&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;roleManager&amp;gt;&lt;/h3&gt;Settings for the custom ASP.NET Role Provider.&lt;br /&gt;
&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;sessionState&amp;gt;&lt;/h3&gt;Settings for the custom ASP.NET Session-State Provider.&lt;br /&gt;
&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;connectionManagement&amp;gt;&lt;/h3&gt;By default ASP.NET only allows 2 concurrent client requests, this is really inefficient as your Azure server instances has capabilities of processing many more simultaneous asynchronous requests. Because of this AzureProviders accepts 48 concurrent client requests by default, but you should really try and find the setting that works best for your solution. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;br /&gt;
&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;settings&amp;gt;&lt;/h3&gt;By default ASP.NET uses the HTTP Expect 100-Continue pattern, which can be a performance issue if your HTTP operations are small, because of this AzureProviders has turned HTTP Expect 100-Continue off. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Fri, 14 Oct 2011 18:04:44 GMT</pubDate><guid isPermaLink="false">Updated Wiki: WebPages project 20111014060444P</guid></item><item><title>Updated Wiki: WebPages project</title><link>http://azureproviders.codeplex.com/wikipage?title=WebPages project&amp;version=17</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;WebPages project&lt;/h1&gt;The WebPages project is the start-up ASP.NET web application.&lt;br /&gt;
&lt;h2&gt;/Account/ActivateAccount.aspx&lt;/h2&gt;A Web page that a newly registered user needs to visit in order to sign in for the first time. An e-mail with a personal link to this page is sent after the user has registered by  &lt;i&gt;/Account/Register.aspx&lt;/i&gt;. The request parameter &amp;quot;Id&amp;quot; should contain the user id of the user that is to be activated, if not an error is displayed. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-ASfC43hrsK4/TW-OSBtMkgI/AAAAAAAAALE/WaRazFZoCbs/s1600/ActivateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-czgwsWF2KeA/TW-OTEFVMuI/AAAAAAAAALQ/1Ajhav041HU/s1600/ChangePasswordSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;After the user has activated his account a confirmation e-mail is sent to the user.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-tBTdEptbRhw/TW-ORGUde9I/AAAAAAAAAK8/8NHG26y6JIU/s1600/AccountActivatedEmail.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Account/ChangePassword.aspx&lt;/h2&gt;A Web page that allows a user to change his/her password. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-zJKxxtro9GQ/TW-OS_FVmJI/AAAAAAAAALM/CtK-Gc_WIWs/s1600/ChangePassword.png" /&gt;&lt;br /&gt;&lt;br /&gt;A confirmation e-mail is sent to the user after the password has been changed.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-JuCipslvq5E/TW-OUdtr5fI/AAAAAAAAALg/YqvHLR6MJcs/s1600/PasswordChangedEmail.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Account/Login.aspx&lt;/h2&gt;A Web page that allows the user to sign in using his/her username or e-mail address and password.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-6AYQtp22cwE/TW-OV96KzqI/AAAAAAAAAL0/TYMdEHZvsGk/s1600/UserSignIn.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Account/Logout.aspx&lt;/h2&gt;A Web page that signs the user out.&lt;br /&gt;
&lt;h2&gt;/Account/Register.aspx&lt;/h2&gt;A Web page that lets a user create a new account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-KlUoh0t88-4/TW-OTStjw2I/AAAAAAAAALU/me37mCKWqFc/s1600/CreateAccount.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PYPW_RlRfQE/TW-OTlWs5OI/AAAAAAAAALY/p5-EJ_LVjds/s1600/CreateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: After the user has registered an e-mail is sent with a link to &lt;i&gt;/Account/ActivateAccount.aspx&lt;/i&gt; to activate the user account and to validate the e-mail address of the user. The domain here is by default www.myapp.com, change the domain to the correct value for your development, staging, or production environment.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-ZlxpBhh7A6M/TW-YUMiidpI/AAAAAAAAAMM/kv8VyzOdLNo/s1600/ActivateAccountEmail.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Account/ResetPassword.aspx&lt;/h2&gt;A Web page that lets the user reset his/her password if they have forgotten it. The user must answer the question he/she entered when he/she created the account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-T8jwXpGh7kw/TW-PTDeMQUI/AAAAAAAAAL4/EhZvKAI-H4k/s1600/ResetPassword1.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-VWgkDMoo0Ks/TW-PThwiP2I/AAAAAAAAAL8/2RhZpRh9lAE/s1600/ResetPassword2.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-74CxmHDYWGY/TW-PT_5i0yI/AAAAAAAAAMA/Po1cm3TX0fw/s1600/ResetPassword3.png" /&gt;&lt;br /&gt;&lt;br /&gt;The new automatically generated password is sent to the users e-mail address.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-W8WDxax8usY/TW-PULhheLI/AAAAAAAAAME/QNYUJgBFBus/s1600/ResetPasswordEmail.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Account/UnlockAccount.aspx&lt;/h2&gt;A Web page that allows the user to unlock his/her user account in the case it has been locked out. After unlocking a confirmation is sent to the users e-mail address.&lt;br /&gt;
&lt;h2&gt;/Account/User.aspx&lt;/h2&gt;A Web page that shows the user profile. If the profile page belongs to the user that is viewing it the user can upload a picture and enter his/her gender. Here you can add/remove you own fields, the default fields are just there as an example. &lt;br /&gt;&lt;br /&gt;The default portrait field scales the uploaded image to a thumbnail and stores the processed image in the Azure Blob Storage. The gender field is stored in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-5f7svJgrNGM/TW-OU8jGUDI/AAAAAAAAALk/9qYo6YNx6WA/s1600/Profile.png" /&gt;&lt;br /&gt;
&lt;h3&gt;Querystring parameters&lt;/h3&gt;By default our own user profile page is displayed, if you want to see another users profile page then you can add the user name to the &amp;quot;name&amp;quot; querystring parameter, like this:&lt;br /&gt;&lt;br /&gt;http://example.com/Account/User.aspx?name=Admin&lt;br /&gt;&lt;br /&gt;The example above would show Admin&amp;#39;s user profile page.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-rmja5gJTjv8/TW-OUPCUtoI/AAAAAAAAALc/IYWrLa8LRhE/s1600/OtherUsersProfile.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Account/Web.config&lt;/h2&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h2&gt;/Admin/InitApp.aspx&lt;/h2&gt;A Web page that initializes the AzureProviders application. You need to visit this page once to create:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;There is no harm in calling this page more than once. &lt;br /&gt;
&lt;h3&gt;History of InitApp.aspx&lt;/h3&gt;In earlier versions of AzureProviders this page was removed and the code moved to &lt;i&gt;Global.asax&lt;/i&gt; or the Azure Role &lt;i&gt;OnStart()&lt;/i&gt; method, but this attempt ultimately failed because of the context of the processes than ran them, and so the &lt;i&gt;/Admin/InitApp.asp&lt;/i&gt; web page was re-implemented again. &lt;br /&gt;&lt;br /&gt;If you have a better way of doing the initialization of AzureProviders then please let me know, but make sure that you have tested that it works in staging/production first and not just your development environment, like I mistakenly did.&lt;br /&gt;
&lt;h2&gt;/Admin/Roles.aspx&lt;/h2&gt;A Web page that lists all the ASP.NET Role Provider roles.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh3.googleusercontent.com/-LmdzOr3cQNw/TW-OVG1PllI/AAAAAAAAALo/rltnxNecKs0/s1600/Roles.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Admin/Sessions.aspx&lt;/h2&gt;A Web page that lists all the active ASP.NET Session Provider sessions.&lt;br /&gt;
&lt;h2&gt;/Admin/Statistics.aspx&lt;/h2&gt;A Web page that shows the total number of registered users and the number of online users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-IS5uPtRWNRg/TW-OVcMo2pI/AAAAAAAAALs/HHBR9oouoUU/s1600/Stats.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Admin/Users.aspx&lt;/h2&gt;A Web page that lists all the ASP.NET Membership Provider users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PiiIg8zqb1A/TW-X77f7i7I/AAAAAAAAAMI/gmIiXR0zspw/s1600/Users.png" /&gt;&lt;br /&gt;
&lt;h2&gt;/Admin/Web.config&lt;/h2&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h2&gt;Email.resx&lt;/h2&gt;E-mail message resources like e-mail header and footer.&lt;br /&gt;
&lt;h2&gt;Profile.resx&lt;/h2&gt;Resources used by the ASP.NET Profile Provider.&lt;br /&gt;
&lt;h2&gt;/Bll/AzureMembershipProvider.cs&lt;/h2&gt;Business logic for a custom ASP.NET Membership Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: If you are only interested in the membership provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the membership provider deceleration from Web.config.&lt;/b&gt;&lt;br /&gt;
&lt;h2&gt;/Bll/AzureProfileProvider.cs&lt;/h2&gt;Business logic for a custom ASP.NET Profile Provider that stores all its data in the Azure Table and Blob Storage.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: If you are only interested in the profile provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the profile provider deceleration from Web.config.&lt;/b&gt;&lt;br /&gt;
&lt;h2&gt;/Bll/AzureRoleProvider.cs&lt;/h2&gt;Business logic for a custom ASP.NET Role Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: If you are only interested in the role provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the role provider deceleration from Web.config.&lt;/b&gt;&lt;br /&gt;
&lt;h2&gt;/Bll/AzureSessionStateProvider.cs&lt;/h2&gt;Business logic for a custom ASP.NET Session-State Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: If you are only interested in the session provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the session provider deceleration from Web.config.&lt;/b&gt;&lt;br /&gt;
&lt;h2&gt;/Bll/GraphicUtilities.cs&lt;/h2&gt;Business logic that lets you create thumbnails and resize images.&lt;br /&gt;
&lt;h2&gt;/Bll/InitApplication.cs&lt;/h2&gt;Business logic that creates:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;/Ccc/EncryptionUtilities.cs&lt;/h2&gt;Business logic that makes a MD5 hash from a string.&lt;br /&gt;
&lt;h2&gt;/Images/&lt;/h2&gt;Image file folder.&lt;br /&gt;
&lt;h2&gt;/Scripts/&lt;/h2&gt;JavaScript file folder.&lt;br /&gt;
&lt;h2&gt;/Styles/&lt;/h2&gt;CSS file folder.&lt;br /&gt;
&lt;h2&gt;About.aspx&lt;/h2&gt;Some information about the AzureProviders solution.&lt;br /&gt;
&lt;h2&gt;Default.aspx&lt;/h2&gt;The start page. Demo&amp;#39;s the ASP.NET Session-State Provider by showing when the user session was started.&lt;br /&gt;
&lt;h2&gt;Global.asax&lt;/h2&gt;Initializes the Azure Cloud Storage Account when the Web application starts.&lt;br /&gt;
&lt;h2&gt;Site.master&lt;/h2&gt;Master page.&lt;br /&gt;
&lt;h2&gt;Web.config&lt;/h2&gt;&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;appSettings&amp;gt;&lt;/h3&gt;Key/value&amp;#39;s:
&lt;ul&gt;&lt;li&gt;StaticKey; A static key is used instead of machiekey to encrypt passwords since machinekey changes when in development&lt;/li&gt;
&lt;li&gt;fromEmail; (default=&amp;quot;do-not-reply@example.com&amp;quot;) This is the e-mail address that will be the sender on all the e-mails sent by this application&lt;/li&gt;
&lt;li&gt;AdminName; (default=&amp;quot;Admin&amp;quot;) By default a administrator user is made and this is its sign in name&lt;/li&gt;
&lt;li&gt;AdminEmail; (default=&amp;quot;admin@example.com&amp;quot;) By default a administrator user is made and this is its e-mail&lt;/li&gt;
&lt;li&gt;AdminPassword; (default=&amp;quot;Password&amp;quot;) By default a administrator user is made and this is its password&lt;/li&gt;
&lt;li&gt;AdminQuestion; (default=&amp;quot;Color of my first car?&amp;quot;) By default a administrator user is made and this is its password retrieval question&lt;/li&gt;
&lt;li&gt;AdminAnswer; (default=&amp;quot;Kiwi&amp;quot;) By default a administrator user is made and this is its password retrieval answer&lt;/li&gt;
&lt;li&gt;AdminRoleName; (default=&amp;quot;Admins&amp;quot;) By default a role is created to hold administrators and this is its name. Admin is added to this by default&lt;/li&gt;
&lt;li&gt;ApplicationName; (default=&amp;quot;MyApp1&amp;quot;) The name of your application, should match the one in the MultiThreadedWorkerRole &lt;i&gt;app.config&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;QueueDequeueRetrySleepSeconds; (default=3600) Number of seconds to wait before retrying if a message was dequeued in the Azure Queue&lt;/li&gt;
&lt;li&gt;UseNaglingWithTable; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;
&lt;li&gt;UseNaglingWithQueue; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;authentication&amp;gt;&amp;lt;forms&amp;gt;&lt;/h3&gt;Sets the ASP.NET login page to &lt;i&gt;/Account/Login.aspx&lt;/i&gt;&lt;br /&gt;
&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;membership&amp;gt;&lt;/h3&gt;Settings for the custom ASP.NET Membership Provider.&lt;br /&gt;
&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;profile&amp;gt;&lt;/h3&gt;Settings for the custom ASP.NET Profile Provider.&lt;br /&gt;
&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;roleManager&amp;gt;&lt;/h3&gt;Settings for the custom ASP.NET Role Provider.&lt;br /&gt;
&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;sessionState&amp;gt;&lt;/h3&gt;Settings for the custom ASP.NET Session-State Provider.&lt;br /&gt;
&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;connectionManagement&amp;gt;&lt;/h3&gt;By default ASP.NET only allows 2 concurrent client requests, this is really inefficient as your Azure server instances has capabilities of processing many more simultaneous asynchronous requests. Because of this AzureProviders accepts 48 concurrent client requests by default, but you should really try and find the setting that works best for your solution. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;br /&gt;
&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;settings&amp;gt;&lt;/h3&gt;By default ASP.NET uses the HTTP Expect 100-Continue pattern, which can be a performance issue if your HTTP operations are small, because of this AzureProviders has turned HTTP Expect 100-Continue off. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Sun, 02 Oct 2011 13:33:18 GMT</pubDate><guid isPermaLink="false">Updated Wiki: WebPages project 20111002013318P</guid></item><item><title>Updated Wiki: ThreadedRoleEntryPoint project</title><link>http://azureproviders.codeplex.com/wikipage?title=ThreadedRoleEntryPoint project&amp;version=3</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;ThreadedRoleEntryPoint project&lt;/h1&gt;ThreadedRoleEntryPoint is a class library project that works as the business logic for multi-threaded roles; i.e. the MultiThreadedWorkerRole project. If you create a standard Azure worker role only a single thread is in use, this is a huge waste of resources as the server instances that the worker roles run on have processors with many cores that are capable of processing many threads asynchronously, MultiThreadedWorkerRole worker role counters his by spawning one thread for each role.&lt;br /&gt;
&lt;h2&gt;Multi-threaded role&lt;/h2&gt;The MultiThreadedWorkerRole project&amp;#39;s job is to spawn a new thread for each job that is done. If you create a standard Azure worker role only a single thread is in use, this is a huge waste of resources as the server instances that the worker roles run on have processors with many cores that are capable of processing many threads asynchronously, MultiThreadedWorkerRole worker role counters his by spawning one thread for each role.&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://www.31a2ba2a-b718-11dc-8314-0800200c9a66.com/2010/12/running-multiple-threads-on-windows.html" class="externalLink"&gt;http://www.31a2ba2a-b718-11dc-8314-0800200c9a66.com/2010/12/running-multiple-threads-on-windows.html&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for information on how this multi-threaded worker role software design pattern works.&lt;br /&gt;
&lt;h2&gt;ThreadedRoleEntryPoint.cs&lt;/h2&gt;&lt;i&gt;ThreadedRoleEntryPoint&lt;/i&gt; is an abstract class that works as a role entry point for multi-threaded worker roles. It has the following work assigned to it:
&lt;ul&gt;&lt;li&gt;spawn a thread for each job,&lt;/li&gt;
&lt;li&gt;monitor and restart dead threads.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;The application setting &lt;i&gt;CheckDeadThreadSleepInSeconds&lt;/i&gt; determines how often &lt;i&gt;ThreadedRoleEntryPoint&lt;/i&gt; should check for dead threads, increasing this may save you Azure computing costs.&lt;br /&gt;
&lt;h2&gt;WorkerEntryPoint.cs&lt;/h2&gt;&lt;i&gt;WorkerEntryPoint&lt;/i&gt; is an abstract class that contains the logic for the Back-Off design pattern.&lt;br /&gt;
&lt;h3&gt;Back-off pattern &lt;/h3&gt;The MultiThreadedWorkerRole project inherits a Back-Off design pattern from &lt;i&gt;ThreadedWorkerRoleLib&lt;/i&gt;, this pattern causes the &lt;i&gt;System.Threading.Thread.Sleep()&lt;/i&gt; to double after each time the job was unemployed. Since you pay per processing hour on Azure this design pattern saves you money.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Sun, 02 Oct 2011 13:31:10 GMT</pubDate><guid isPermaLink="false">Updated Wiki: ThreadedRoleEntryPoint project 20111002013110P</guid></item><item><title>Updated Wiki: MultiThreadedWorkerRole project</title><link>http://azureproviders.codeplex.com/wikipage?title=MultiThreadedWorkerRole project&amp;version=5</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;MultiThreadedWorkerRole project&lt;/h1&gt;The MultiThreadedWorkerRole project is the worker role in the AzureProviders solution. &lt;br /&gt;
&lt;h2&gt;Multi-threaded role&lt;/h2&gt;The MultiThreadedWorkerRole project&amp;#39;s job is to spawn a new thread for each job that is done. If you create a standard Azure worker role only a single thread is in use, this is a huge waste of resources as the server instances that the worker roles run on have processors with many cores that are capable of processing many threads asynchronously, MultiThreadedWorkerRole worker role counters his by spawning one thread for each role.&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://www.31a2ba2a-b718-11dc-8314-0800200c9a66.com/2010/12/running-multiple-threads-on-windows.html" class="externalLink"&gt;http://www.31a2ba2a-b718-11dc-8314-0800200c9a66.com/2010/12/running-multiple-threads-on-windows.html&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for information on how this multi-threaded worker role software design pattern works.&lt;br /&gt;
&lt;h2&gt;Back-off pattern &lt;/h2&gt;The MultiThreadedWorkerRole project inherits a Back-Off design pattern from &lt;i&gt;ThreadedWorkerRoleLib&lt;/i&gt;, this pattern causes the &lt;i&gt;System.Threading.Thread.Sleep()&lt;/i&gt; to double after each time the job was unemployed. Since you pay per processing hour on Azure this design pattern saves you money.&lt;br /&gt;&lt;br /&gt;Since some jobs are more important than others you can specify the maximum back-off time. As an example, sending an e-mail immediately may not be so important, the user gladly can wait a minute, but charging someone&amp;#39;s credit card should happen immediately.&lt;br /&gt;
&lt;h2&gt;app.config&lt;/h2&gt;&lt;i&gt;app.config&lt;/i&gt; is an application configuration file.&lt;br /&gt;
&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;appSettings&amp;gt;&lt;/h3&gt;Key/value&amp;#39;s:
&lt;ul&gt;&lt;li&gt;&lt;i&gt;NumberOfSendEmailRetries&lt;/i&gt;; (default=3) Number of send an e-mail attempts before giving up&lt;/li&gt;
&lt;li&gt;&lt;i&gt;CheckDeadThreadSleepInSeconds&lt;/i&gt;; (default=4) Number of seconds to sleep after checking that all the worker role threads are up and running&lt;/li&gt;
&lt;li&gt;&lt;i&gt;QueueDequeueRetrySleepSeconds&lt;/i&gt;; (default=3600) Number of seconds to wait before retrying if a message was dequeued&lt;/li&gt;
&lt;li&gt;&lt;i&gt;EmailWorkerMaxThreadSleepSeconds&lt;/i&gt;; (default=30) When using the Back Off pattern never let the e-mail worker thread sleep more than this number of seconds&lt;/li&gt;
&lt;li&gt;&lt;i&gt;SessionStateWorkerMaxThreadSleepSeconds&lt;/i&gt;; (default=60) When using the Back Off pattern never let the session-state worker thread sleep more than this number of seconds&lt;/li&gt;
&lt;li&gt;&lt;i&gt;ApplicationName&lt;/i&gt;; (default=&amp;quot;MyApp1&amp;quot;) Name of application, should match the one in the WebPages web.config&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;mailSettings&amp;gt;&lt;/h3&gt;Contains the E-mail SMTP server settings. You must change this to your own e-mail server provider, if you do not have one the you can use SendGrid (&lt;a href="http://sendgrid.com" class="externalLink"&gt;http://sendgrid.com&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;) which allows you to send up to 200 e-mails a day for free.&lt;br /&gt;
&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;connectionManagement&amp;gt;&lt;/h3&gt;By default ASP.NET only allows 2 concurrent client requests, this is really inefficient as your Azure server instances has capabilities of processing many more simultaneous asynchronous requests. Because of this AzureProviders accepts 48 concurrent client requests by default, but you should really try and find the setting that works best for your solution. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;br /&gt;
&lt;h3&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;settings&amp;gt;&lt;/h3&gt;By default ASP.NET uses the HTTP Expect 100-Continue pattern, which can be a performance issue if your HTTP operations are small, because of this AzureProviders has turned HTTP Expect 100-Continue off. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;br /&gt;
&lt;h2&gt;EmailWorker.cs&lt;/h2&gt;The &lt;i&gt;EmailWorker&lt;/i&gt; class listens to the Azure e-mail queue for e-mails that is to be sent. &lt;i&gt;EmailWorker&lt;/i&gt; will try to send the e-mail as many times as specified in the application setting &lt;i&gt;NumberOfSendEmailRetries&lt;/i&gt; before giving up. &lt;br /&gt;&lt;br /&gt;Since &lt;i&gt;EmailWorker&lt;/i&gt; inherits &lt;i&gt;WorkerEntryPoint&lt;/i&gt; it will run in its own thread. &lt;br /&gt;
&lt;h3&gt;SMTP server&lt;/h3&gt;The SMTP settings is found in the &lt;i&gt;mailSettings&lt;/i&gt; section of &lt;i&gt;app.config&lt;/i&gt;.&lt;br /&gt;
&lt;h2&gt;MessageWorker.cs&lt;/h2&gt;The &lt;i&gt;MessageWorker&lt;/i&gt; class is an example of how a minimal job is defined in AzureProviders. A job defined like this would run in its own thread. &lt;br /&gt;&lt;br /&gt;Since &lt;i&gt;MessageWorker&lt;/i&gt; inherits &lt;i&gt;WorkerEntryPoint&lt;/i&gt; it will run in its own thread. &lt;br /&gt;
&lt;h2&gt;SessionStateWorker.cs&lt;/h2&gt;The &lt;i&gt;SessionStateWorker&lt;/i&gt; class clears any expired ASP.NET Membership sessions from the &lt;i&gt;SessionStateEntity&lt;/i&gt; table. &lt;br /&gt;&lt;br /&gt;Since &lt;i&gt;SessionStateWorker&lt;/i&gt; inherits &lt;i&gt;WorkerEntryPoint&lt;/i&gt; it will run in its own thread. &lt;br /&gt;
&lt;h2&gt;WorkerRole.cs&lt;/h2&gt;The &lt;i&gt;WorkerRole&lt;/i&gt; class is the entry point for the Azure infrastructure process, it initializes the role process.&lt;br /&gt;&lt;br /&gt;The &lt;i&gt;WorkerRole.GetWorkerRoles()&lt;/i&gt; method is where you define which jobs you want to run in the MultiThreadedWorkerRole worker role, by default the &lt;i&gt;EmailWorker&lt;/i&gt; and &lt;i&gt;SessionStateWorker&lt;/i&gt; jobds are defined here, you can add your own here. All jobds will run in their own thread, separate from the other roles in the MultiThreadedWorkerRole worker role. You can comment in &lt;i&gt;MessageWorker&lt;/i&gt; to experiment with adding a new job.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;WorkerRole&lt;/i&gt; inherits the abstract &lt;i&gt;ThreadedWorkerRoleLib.ThreadedRoleEntryPoint&lt;/i&gt; which handles most of the logic for the job.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;EmailWorkerMaxThreadSleepSeconds&lt;/i&gt; and &lt;i&gt;SessionStateWorkerMaxThreadSleepSeconds&lt;/i&gt; settings in &lt;i&gt;app.config&lt;/i&gt; sets the maximum time to thread sleep using the Back-Off pattern.&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Sun, 02 Oct 2011 13:30:41 GMT</pubDate><guid isPermaLink="false">Updated Wiki: MultiThreadedWorkerRole project 20111002013041P</guid></item><item><title>Updated Wiki: CrossCuttingConcerns project</title><link>http://azureproviders.codeplex.com/wikipage?title=CrossCuttingConcerns project&amp;version=3</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;CrossCuttingConcerns project&lt;/h1&gt;&lt;i&gt;New in V1.7.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The CrossCuttingConcerns project handles cross-cutting concerns like logging and diagnostics, this functionality is used by all the projects in the solution and by both roles, so the code does not belong anywhere else than in a separate project.&lt;br /&gt;
&lt;h2&gt;AzureDiagnostics.cs&lt;/h2&gt;The &lt;i&gt;AzureDiagnostics&lt;/i&gt; class handles all kinds of logging and diagnostics from the Azure server instances to the Azure Table Storage and Blob Storage. By default a lot of logging and diagnostics is enabled, much more than you probably want after you go live, therefore you should alter your settings in here. Since this class is called &amp;quot;all over the place&amp;quot; we can not the settings in a application configuration file or in the role settings, all settings are therefore hard-coded in the class.&lt;br /&gt;&lt;br /&gt;The &lt;i&gt;AzureDiagnostics.EnableAzureDiagnostics()&lt;/i&gt; is what enables diagnostics for a Azure role, it is by default called from all the role &lt;i&gt;OnStart()&lt;/i&gt; methods.&lt;br /&gt;&lt;br /&gt;This video goes through all of the concepts that the &lt;i&gt;AzureDiagnostics&lt;/i&gt; class handles: &lt;br /&gt;&lt;a href="http://www.microsoftpdc.com/2009/SVC15" class="externalLink"&gt;http://www.microsoftpdc.com/2009/SVC15&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;Tables&lt;/h3&gt;These are the Azure Tables that are created by the &lt;i&gt;AzureDiagnostics&lt;/i&gt; class:
&lt;ul&gt;&lt;li&gt;&lt;i&gt;WADDiagnosticsInfrastructureLogs&lt;/i&gt; is the Azure infrastructure log,&lt;/li&gt;
&lt;li&gt;&lt;i&gt;WADDirectoriesTable&lt;/i&gt; contains references to all the file-based logs that are stored in the Azure Blob Storage (the IIS logs),&lt;/li&gt;
&lt;li&gt;&lt;i&gt;WADLogsTable&lt;/i&gt; is the diagnostics logs (see &lt;i&gt;System.Diagnostics.Trace&lt;/i&gt; for more information about trace logs),&lt;/li&gt;
&lt;li&gt;&lt;i&gt;WADPerformaceCountersTable&lt;/i&gt; is the log for your performance counters (by default only the processor percentage is tracked)&lt;/li&gt;
&lt;li&gt;&lt;i&gt;WADWindowsEventLogsTable&lt;/i&gt; contains the Windows Application and System logs by default.&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Blob containers&lt;/h3&gt;By default the &lt;i&gt;AzureDiagnostics&lt;/i&gt; class creates the &lt;i&gt;wad-iis-logfiles&lt;/i&gt; Azure blob container, this blob contains all the IIS logfiles in the W3C Extended Log File Format.&lt;br /&gt;
&lt;h3&gt;Scheduled transfers&lt;/h3&gt;Scheduled transfers is how often you want your logs and diagnostics being uploaded to the Azure Table Storage and Blob Storage.&lt;br /&gt;&lt;br /&gt;The &lt;i&gt;AzureDiagnostics.SetDiagnositcManagerScheduledTransferPeriods()&lt;/i&gt; method sets how often the scheduled transfers should occur. Commenting out a line here will disable the logging or diagnostics of that type. By default all scheduled transfers are set to 5 minutes.&lt;br /&gt;
&lt;h3&gt;Crash dumps&lt;/h3&gt;By default full crash dumps are stored as a blob in the Azure Blob Storage.&lt;br /&gt;&lt;br /&gt;Full crashdumps are not available in asp.net roles as the exception is always caught. The only exception here is when the role is starting, as that happens in another non-ASP.NET process&lt;br /&gt;
&lt;h3&gt;Performance counters&lt;/h3&gt;Performance counters are enabled by default by AzureProviders, the counters that are to be tracked is set in the &lt;i&gt;AzureDiagnostics.AddPerformanceCounterMonitoring()&lt;/i&gt; method, by default only the processor percentage is tracked. &lt;br /&gt;&lt;br /&gt;&lt;i&gt;Microsoft.WindowsAzure.Diagnostics.PerformanceCounterConfiguration.CounterSpecifier&lt;/i&gt; is language specific, so if you run your developer environment in another language OS that an English one you may get into trouble. For a complete list of possible PerformanceCounterConfiguration.CounterSpecifier values for your OS language run &amp;quot;typeperf.exe /Q&amp;quot; in a console. By default the sample rate is every 15 seconds from the tracked performance counters, you may want to tweak this to get less log entries.&lt;br /&gt;
&lt;h3&gt;Windows Event logs&lt;/h3&gt;By default all Windows events to the Application and System logs are stored in the Azure Table Storage, you can change this in the _AzureDiagnostics.AddEventLoggingFromWindowsEventLog() method. Decide here what Windows event logs you are interested in seeing, you can also filter out events if you want to. The syntax is &amp;lt;channel&amp;gt;!XPath Query , see &lt;a href="http://msdn.microsoft.com/en-us/library/dd996910(VS.85).aspx" class="externalLink"&gt;http://msdn.microsoft.com/en-us/library/dd996910(VS.85).aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information.&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Sun, 02 Oct 2011 13:29:49 GMT</pubDate><guid isPermaLink="false">Updated Wiki: CrossCuttingConcerns project 20111002012949P</guid></item><item><title>Updated Wiki: AzureQueue project</title><link>http://azureproviders.codeplex.com/wikipage?title=AzureQueue project&amp;version=6</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;AzureQueue project&lt;/h1&gt;A data access layer (DAL) class library project that handles create, read, update, and delete (CRUD) operations on the Azure Queue. &lt;br /&gt;
&lt;h2&gt;The e-mail queue&lt;/h2&gt;By default a queue for processing e-mails is created by the AzureProviders solution. Whenever an e-mail is to e sent it is first placed in the e-mail queue to be processed asynchronously by the &lt;i&gt;MultiThreadedWorkerRole&lt;/i&gt; role. This is very useful as the process sending the e-mail does not have to wait until the e-mail is sent before continuing its further processing&lt;br /&gt;
&lt;h2&gt;AzureQueueContext.cs file&lt;/h2&gt;
The &lt;i&gt;AzureQueueContext&lt;/i&gt; class is the context for the &lt;i&gt;AzureQueueDataSource&lt;/i&gt; class. It holds information like
&lt;ul&gt;&lt;li&gt;the name of the e-mail queue, &lt;/li&gt;
&lt;li&gt;the cloud storage account in use,&lt;/li&gt;
&lt;li&gt;the current cloud queue client.&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;Retry policy&lt;/h3&gt;The &lt;i&gt;AzureQueueContext&lt;/i&gt;  class also sets the number of retries before failing; by default an e-mail is attempted sent three times before being ignored. Application setting key &lt;i&gt;QueueDequeueRetrySleepSeconds&lt;/i&gt; decides how many seconds the queue waits before retrying after a failed attempt.&lt;br /&gt;
&lt;h3&gt;Nagling&lt;/h3&gt;HTTP &lt;i&gt;PUT&lt;/i&gt; requests smaller than 1460 bytes are inefficient with nagling turned on. The AzureProviders solution has turned nagling off by default, this setting is set in the &lt;i&gt;UseNaglingWithQueue&lt;/i&gt; application setting key.&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for information about gained advantages by turning off nagling.&lt;br /&gt;
&lt;h2&gt;AzureQueueDataSource.cs file&lt;/h2&gt;The &lt;i&gt;AzureQueueDataSource&lt;/i&gt; class is the data source against the Azure Queue. &lt;br /&gt;
&lt;h3&gt;E-mail serialization&lt;/h3&gt;&lt;i&gt;AzureQueueDataSource&lt;/i&gt; also handles internal operations like serializing and de-serializing to and from JSON. The e-mails that are put in the e-mail queue is stored there as &lt;i&gt;EmailEntity&lt;/i&gt; objects serialized as JSON.&lt;br /&gt;
&lt;h3&gt;Creating the e-mail queue&lt;/h3&gt;&lt;i&gt;AzureQueueDataSource.CreateQueuesIfTheyDontExists()&lt;/i&gt; contains code that creates the e-mail queue, this is currently called from &lt;i&gt;~/Admin/InitApp.aspx&lt;/i&gt;. In early versions of AzureProviders this was done automatically, this was removed later since the overhead and expense was considered too much.&lt;br /&gt;
&lt;h2&gt;EmailEntity.cs file&lt;/h2&gt;The &lt;i&gt;EmailEntity&lt;/i&gt; class is used for serializing and de-serializing e-mails as the e-mails are placed and retrieved from the e-mail queue.&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Sun, 02 Oct 2011 13:29:10 GMT</pubDate><guid isPermaLink="false">Updated Wiki: AzureQueue project 20111002012910P</guid></item><item><title>Updated Wiki: AzureTableStorage project</title><link>http://azureproviders.codeplex.com/wikipage?title=AzureTableStorage project&amp;version=4</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;AzureTableStorage project&lt;/h1&gt;AzureTableStorage is a data access layer (DAL) class library that handles all create, read, update, and delete (CRUD) operations against the Azure Table Storage.&lt;br /&gt;
&lt;h2&gt;AzureTableStorageDataSource.cs&lt;/h2&gt;The &lt;i&gt;AzureTableStorageDataSource&lt;/i&gt; class is the data source towards the Azure Table Storage as specified in the &lt;i&gt;DataConnectionString&lt;/i&gt; role setting. &lt;br /&gt;
&lt;h3&gt;Nagling&lt;/h3&gt;HTTP &lt;i&gt;PUT&lt;/i&gt; requests smaller than 1460 bytes are inefficient with nagling turned on. The AzureProviders solution has turned nagling off by default, this setting is set in the &lt;i&gt;UseNaglingWithTable&lt;/i&gt; application setting key.&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for information about gained advantages by turning off nagling.&lt;br /&gt;
&lt;h3&gt;Tables&lt;/h3&gt;The &lt;i&gt;AzureTableStorageDataSource&lt;/i&gt; class contains code that creates the Azure tables, this is currently called from &lt;i&gt;~/Admin/InitApp.aspx&lt;/i&gt;. In early versions of AzureProviders this was done automatically, this was removed later since the overhead and expense was considered too much.&lt;br /&gt;&lt;br /&gt;These are the Azure tables that are created by default:
&lt;ul&gt;&lt;li&gt;&lt;i&gt;UserEntity&lt;/i&gt; contains ASP.NET Membership users,&lt;/li&gt;
&lt;li&gt;&lt;i&gt;RoleEntity&lt;/i&gt; contains ASP.NET Membership roles,&lt;/li&gt;
&lt;li&gt;&lt;i&gt;SessionStateEntity&lt;/i&gt; contains ASP.NET Membership sessions.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;AzureTableStorageServiceContext.cs&lt;/h2&gt;The &lt;i&gt;AzureTableStorageServiceContext&lt;/i&gt; class is the data context that is used with the Azure Table data source. It also contains the name of the Azure tables.&lt;br /&gt;
&lt;h2&gt;RoleEntity.cs&lt;/h2&gt;&lt;i&gt;RoleEntity&lt;/i&gt; is a &lt;i&gt;Microsoft.WindowsAzure.StorageClient.TableServiceEntity&lt;/i&gt; data entity class that is used to store ASP.NET Membership roles in the Azure Table Storage. &lt;br /&gt;
&lt;h2&gt;SessionStateEntity.cs&lt;/h2&gt;&lt;i&gt;SessionStateEntity&lt;/i&gt; is a &lt;i&gt;Microsoft.WindowsAzure.StorageClient.TableServiceEntity&lt;/i&gt; data entity class that is used to store ASP.NET Membership sessions in the Azure Table Storage.&lt;br /&gt;
&lt;h2&gt;UserEntity.cs&lt;/h2&gt;&lt;i&gt;UserEntity&lt;/i&gt; is a &lt;i&gt;Microsoft.WindowsAzure.StorageClient.TableServiceEntity&lt;/i&gt; data entity class that is used to store ASP.NET Membership users in the Azure Table Storage. Roles are stored in a comma seperated (CVS) string.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Sun, 02 Oct 2011 13:28:37 GMT</pubDate><guid isPermaLink="false">Updated Wiki: AzureTableStorage project 20111002012837P</guid></item><item><title>Updated Wiki: AzureQueue project</title><link>http://azureproviders.codeplex.com/wikipage?title=AzureQueue project&amp;version=5</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;AzureQueue project&lt;/h1&gt;A data access layer (DAL) class library project that handles create, read, update, and delete (CRUD) operations on the Azure Queue. &lt;br /&gt;
&lt;h1&gt;The e-mail queue&lt;/h1&gt;By default a queue for processing e-mails is created by the AzureProviders solution. Whenever an e-mail is to e sent it is first placed in the e-mail queue to be processed asynchronously by the &lt;i&gt;MultiThreadedWorkerRole&lt;/i&gt; role. This is very useful as the process sending the e-mail does not have to wait until the e-mail is sent before continuing its further processing&lt;br /&gt;
&lt;h1&gt;AzureQueueContext.cs file&lt;/h1&gt;
The &lt;i&gt;AzureQueueContext&lt;/i&gt; class is the context for the &lt;i&gt;AzureQueueDataSource&lt;/i&gt; class. It holds information like
&lt;ul&gt;&lt;li&gt;the name of the e-mail queue, &lt;/li&gt;
&lt;li&gt;the cloud storage account in use,&lt;/li&gt;
&lt;li&gt;the current cloud queue client.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Retry policy&lt;/h2&gt;The &lt;i&gt;AzureQueueContext&lt;/i&gt;  class also sets the number of retries before failing; by default an e-mail is attempted sent three times before being ignored. Application setting key &lt;i&gt;QueueDequeueRetrySleepSeconds&lt;/i&gt; decides how many seconds the queue waits before retrying after a failed attempt.&lt;br /&gt;
&lt;h2&gt;Nagling&lt;/h2&gt;HTTP &lt;i&gt;PUT&lt;/i&gt; requests smaller than 1460 bytes are inefficient with nagling turned on. The AzureProviders solution has turned nagling off by default, this setting is set in the &lt;i&gt;UseNaglingWithQueue&lt;/i&gt; application setting key.&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for information about gained advantages by turning off nagling.&lt;br /&gt;
&lt;h1&gt;AzureQueueDataSource.cs file&lt;/h1&gt;The &lt;i&gt;AzureQueueDataSource&lt;/i&gt; class is the data source against the Azure Queue. &lt;br /&gt;
&lt;h2&gt;E-mail serialization&lt;/h2&gt;&lt;i&gt;AzureQueueDataSource&lt;/i&gt; also handles internal operations like serializing and de-serializing to and from JSON. The e-mails that are put in the e-mail queue is stored there as &lt;i&gt;EmailEntity&lt;/i&gt; objects serialized as JSON.&lt;br /&gt;
&lt;h2&gt;Creating the e-mail queue&lt;/h2&gt;&lt;i&gt;AzureQueueDataSource.CreateQueuesIfTheyDontExists()&lt;/i&gt; contains code that creates the e-mail queue, this is currently called from &lt;i&gt;~/Admin/InitApp.aspx&lt;/i&gt;. In early versions of AzureProviders this was done automatically, this was removed later since the overhead and expense was considered too much.&lt;br /&gt;
&lt;h1&gt;EmailEntity.cs file&lt;/h1&gt;The &lt;i&gt;EmailEntity&lt;/i&gt; class is used for serializing and de-serializing e-mails as the e-mails are placed and retrieved from the e-mail queue.&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Sun, 02 Oct 2011 13:27:45 GMT</pubDate><guid isPermaLink="false">Updated Wiki: AzureQueue project 20111002012745P</guid></item><item><title>Updated Wiki: WebPages project</title><link>http://azureproviders.codeplex.com/wikipage?title=WebPages project&amp;version=16</link><description>&lt;div class="wikidoc"&gt;The WebPages project is the start-up ASP.NET web application.&lt;br /&gt;
&lt;h1&gt;/Account/ActivateAccount.aspx&lt;/h1&gt;A Web page that a newly registered user needs to visit in order to sign in for the first time. An e-mail with a personal link to this page is sent after the user has registered by  &lt;i&gt;/Account/Register.aspx&lt;/i&gt;. The request parameter &amp;quot;Id&amp;quot; should contain the user id of the user that is to be activated, if not an error is displayed. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-ASfC43hrsK4/TW-OSBtMkgI/AAAAAAAAALE/WaRazFZoCbs/s1600/ActivateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-czgwsWF2KeA/TW-OTEFVMuI/AAAAAAAAALQ/1Ajhav041HU/s1600/ChangePasswordSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;After the user has activated his account a confirmation e-mail is sent to the user.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-tBTdEptbRhw/TW-ORGUde9I/AAAAAAAAAK8/8NHG26y6JIU/s1600/AccountActivatedEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/ChangePassword.aspx&lt;/h1&gt;A Web page that allows a user to change his/her password. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-zJKxxtro9GQ/TW-OS_FVmJI/AAAAAAAAALM/CtK-Gc_WIWs/s1600/ChangePassword.png" /&gt;&lt;br /&gt;&lt;br /&gt;A confirmation e-mail is sent to the user after the password has been changed.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-JuCipslvq5E/TW-OUdtr5fI/AAAAAAAAALg/YqvHLR6MJcs/s1600/PasswordChangedEmail.png" /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Login.aspx&lt;/h1&gt;A Web page that allows the user to sign in using his/her username or e-mail address and password.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-6AYQtp22cwE/TW-OV96KzqI/AAAAAAAAAL0/TYMdEHZvsGk/s1600/UserSignIn.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Logout.aspx&lt;/h1&gt;A Web page that signs the user out.&lt;br /&gt;
&lt;h1&gt;/Account/Register.aspx&lt;/h1&gt;A Web page that lets a user create a new account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-KlUoh0t88-4/TW-OTStjw2I/AAAAAAAAALU/me37mCKWqFc/s1600/CreateAccount.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PYPW_RlRfQE/TW-OTlWs5OI/AAAAAAAAALY/p5-EJ_LVjds/s1600/CreateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: After the user has registered an e-mail is sent with a link to &lt;i&gt;/Account/ActivateAccount.aspx&lt;/i&gt; to activate the user account and to validate the e-mail address of the user. The domain here is by default www.myapp.com, change the domain to the correct value for your development, staging, or production environment.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-ZlxpBhh7A6M/TW-YUMiidpI/AAAAAAAAAMM/kv8VyzOdLNo/s1600/ActivateAccountEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/ResetPassword.aspx&lt;/h1&gt;A Web page that lets the user reset his/her password if they have forgotten it. The user must answer the question he/she entered when he/she created the account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-T8jwXpGh7kw/TW-PTDeMQUI/AAAAAAAAAL4/EhZvKAI-H4k/s1600/ResetPassword1.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-VWgkDMoo0Ks/TW-PThwiP2I/AAAAAAAAAL8/2RhZpRh9lAE/s1600/ResetPassword2.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-74CxmHDYWGY/TW-PT_5i0yI/AAAAAAAAAMA/Po1cm3TX0fw/s1600/ResetPassword3.png" /&gt;&lt;br /&gt;&lt;br /&gt;The new automatically generated password is sent to the users e-mail address.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-W8WDxax8usY/TW-PULhheLI/AAAAAAAAAME/QNYUJgBFBus/s1600/ResetPasswordEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/UnlockAccount.aspx&lt;/h1&gt;A Web page that allows the user to unlock his/her user account in the case it has been locked out. After unlocking a confirmation is sent to the users e-mail address.&lt;br /&gt;
&lt;h1&gt;/Account/User.aspx&lt;/h1&gt;A Web page that shows the user profile. If the profile page belongs to the user that is viewing it the user can upload a picture and enter his/her gender. Here you can add/remove you own fields, the default fields are just there as an example. &lt;br /&gt;&lt;br /&gt;The default portrait field scales the uploaded image to a thumbnail and stores the processed image in the Azure Blob Storage. The gender field is stored in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-5f7svJgrNGM/TW-OU8jGUDI/AAAAAAAAALk/9qYo6YNx6WA/s1600/Profile.png" /&gt;&lt;br /&gt;
&lt;h2&gt;Querystring parameters&lt;/h2&gt;By default our own user profile page is displayed, if you want to see another users profile page then you can add the user name to the &amp;quot;name&amp;quot; querystring parameter, like this:&lt;br /&gt;&lt;br /&gt;http://example.com/Account/User.aspx?name=Admin&lt;br /&gt;&lt;br /&gt;The example above would show Admin&amp;#39;s user profile page.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-rmja5gJTjv8/TW-OUPCUtoI/AAAAAAAAALc/IYWrLa8LRhE/s1600/OtherUsersProfile.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Web.config&lt;/h1&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h1&gt;/Admin/InitApp.aspx&lt;/h1&gt;A Web page that initializes the AzureProviders application. You need to visit this page once to create:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;There is no harm in calling this page more than once. &lt;br /&gt;
&lt;h2&gt;History of InitApp.aspx&lt;/h2&gt;In earlier versions of AzureProviders this page was removed and the code moved to &lt;i&gt;Global.asax&lt;/i&gt; or the Azure Role &lt;i&gt;OnStart()&lt;/i&gt; method, but this attempt ultimately failed because of the context of the processes than ran them, and so the &lt;i&gt;/Admin/InitApp.asp&lt;/i&gt; web page was re-implemented again. &lt;br /&gt;&lt;br /&gt;If you have a better way of doing the initialization of AzureProviders then please let me know, but make sure that you have tested that it works in staging/production first and not just your development environment, like I mistakenly did.&lt;br /&gt;
&lt;h1&gt;/Admin/Roles.aspx&lt;/h1&gt;A Web page that lists all the ASP.NET Role Provider roles.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh3.googleusercontent.com/-LmdzOr3cQNw/TW-OVG1PllI/AAAAAAAAALo/rltnxNecKs0/s1600/Roles.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Sessions.aspx&lt;/h1&gt;A Web page that lists all the active ASP.NET Session Provider sessions.&lt;br /&gt;
&lt;h1&gt;/Admin/Statistics.aspx&lt;/h1&gt;A Web page that shows the total number of registered users and the number of online users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-IS5uPtRWNRg/TW-OVcMo2pI/AAAAAAAAALs/HHBR9oouoUU/s1600/Stats.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Users.aspx&lt;/h1&gt;A Web page that lists all the ASP.NET Membership Provider users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PiiIg8zqb1A/TW-X77f7i7I/AAAAAAAAAMI/gmIiXR0zspw/s1600/Users.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Web.config&lt;/h1&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h1&gt;Email.resx&lt;/h1&gt;E-mail message resources like e-mail header and footer.&lt;br /&gt;
&lt;h1&gt;Profile.resx&lt;/h1&gt;Resources used by the ASP.NET Profile Provider.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureMembershipProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Membership Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: If you are only interested in the membership provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the membership provider deceleration from Web.config.&lt;/b&gt;&lt;br /&gt;
&lt;h1&gt;/Bll/AzureProfileProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Profile Provider that stores all its data in the Azure Table and Blob Storage.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: If you are only interested in the profile provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the profile provider deceleration from Web.config.&lt;/b&gt;&lt;br /&gt;
&lt;h1&gt;/Bll/AzureRoleProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Role Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: If you are only interested in the role provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the role provider deceleration from Web.config.&lt;/b&gt;&lt;br /&gt;
&lt;h1&gt;/Bll/AzureSessionStateProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Session-State Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: If you are only interested in the session provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the session provider deceleration from Web.config.&lt;/b&gt;&lt;br /&gt;
&lt;h1&gt;/Bll/GraphicUtilities.cs&lt;/h1&gt;Business logic that lets you create thumbnails and resize images.&lt;br /&gt;
&lt;h1&gt;/Bll/InitApplication.cs&lt;/h1&gt;Business logic that creates:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;

&lt;h1&gt;/Ccc/EncryptionUtilities.cs&lt;/h1&gt;Business logic that makes a MD5 hash from a string.&lt;br /&gt;
&lt;h1&gt;/Images/&lt;/h1&gt;Image file folder.&lt;br /&gt;
&lt;h1&gt;/Scripts/&lt;/h1&gt;JavaScript file folder.&lt;br /&gt;
&lt;h1&gt;/Styles/&lt;/h1&gt;CSS file folder.&lt;br /&gt;
&lt;h1&gt;About.aspx&lt;/h1&gt;Some information about the AzureProviders solution.&lt;br /&gt;
&lt;h1&gt;Default.aspx&lt;/h1&gt;The start page. Demo&amp;#39;s the ASP.NET Session-State Provider by showing when the user session was started.&lt;br /&gt;
&lt;h1&gt;Global.asax&lt;/h1&gt;Initializes the Azure Cloud Storage Account when the Web application starts.&lt;br /&gt;
&lt;h1&gt;Site.master&lt;/h1&gt;Master page.&lt;br /&gt;
&lt;h1&gt;Web.config&lt;/h1&gt;&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;appSettings&amp;gt;&lt;/h2&gt;Key/value&amp;#39;s:
&lt;ul&gt;&lt;li&gt;StaticKey; A static key is used instead of machiekey to encrypt passwords since machinekey changes when in development&lt;/li&gt;
&lt;li&gt;fromEmail; (default=&amp;quot;do-not-reply@example.com&amp;quot;) This is the e-mail address that will be the sender on all the e-mails sent by this application&lt;/li&gt;
&lt;li&gt;AdminName; (default=&amp;quot;Admin&amp;quot;) By default a administrator user is made and this is its sign in name&lt;/li&gt;
&lt;li&gt;AdminEmail; (default=&amp;quot;admin@example.com&amp;quot;) By default a administrator user is made and this is its e-mail&lt;/li&gt;
&lt;li&gt;AdminPassword; (default=&amp;quot;Password&amp;quot;) By default a administrator user is made and this is its password&lt;/li&gt;
&lt;li&gt;AdminQuestion; (default=&amp;quot;Color of my first car?&amp;quot;) By default a administrator user is made and this is its password retrieval question&lt;/li&gt;
&lt;li&gt;AdminAnswer; (default=&amp;quot;Kiwi&amp;quot;) By default a administrator user is made and this is its password retrieval answer&lt;/li&gt;
&lt;li&gt;AdminRoleName; (default=&amp;quot;Admins&amp;quot;) By default a role is created to hold administrators and this is its name. Admin is added to this by default&lt;/li&gt;
&lt;li&gt;ApplicationName; (default=&amp;quot;MyApp1&amp;quot;) The name of your application, should match the one in the MultiThreadedWorkerRole &lt;i&gt;app.config&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;QueueDequeueRetrySleepSeconds; (default=3600) Number of seconds to wait before retrying if a message was dequeued in the Azure Queue&lt;/li&gt;
&lt;li&gt;UseNaglingWithTable; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;
&lt;li&gt;UseNaglingWithQueue; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;authentication&amp;gt;&amp;lt;forms&amp;gt;&lt;/h2&gt;Sets the ASP.NET login page to &lt;i&gt;/Account/Login.aspx&lt;/i&gt;&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;membership&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Membership Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;profile&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Profile Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;roleManager&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Role Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;sessionState&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Session-State Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;connectionManagement&amp;gt;&lt;/h2&gt;By default ASP.NET only allows 2 concurrent client requests, this is really inefficient as your Azure server instances has capabilities of processing many more simultaneous asynchronous requests. Because of this AzureProviders accepts 48 concurrent client requests by default, but you should really try and find the setting that works best for your solution. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;settings&amp;gt;&lt;/h2&gt;By default ASP.NET uses the HTTP Expect 100-Continue pattern, which can be a performance issue if your HTTP operations are small, because of this AzureProviders has turned HTTP Expect 100-Continue off. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Sun, 02 Oct 2011 10:02:41 GMT</pubDate><guid isPermaLink="false">Updated Wiki: WebPages project 20111002100241A</guid></item><item><title>Updated Wiki: WebPages project</title><link>http://azureproviders.codeplex.com/wikipage?title=WebPages project&amp;version=15</link><description>&lt;div class="wikidoc"&gt;The WebPages project is the start-up ASP.NET web application.&lt;br /&gt;
&lt;h1&gt;/Account/ActivateAccount.aspx&lt;/h1&gt;A Web page that a newly registered user needs to visit in order to sign in for the first time. An e-mail with a personal link to this page is sent after the user has registered by  &lt;i&gt;/Account/Register.aspx&lt;/i&gt;. The request parameter &amp;quot;Id&amp;quot; should contain the user id of the user that is to be activated, if not an error is displayed. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-ASfC43hrsK4/TW-OSBtMkgI/AAAAAAAAALE/WaRazFZoCbs/s1600/ActivateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-czgwsWF2KeA/TW-OTEFVMuI/AAAAAAAAALQ/1Ajhav041HU/s1600/ChangePasswordSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;After the user has activated his account a confirmation e-mail is sent to the user.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-tBTdEptbRhw/TW-ORGUde9I/AAAAAAAAAK8/8NHG26y6JIU/s1600/AccountActivatedEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/ChangePassword.aspx&lt;/h1&gt;A Web page that allows a user to change his/her password. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-zJKxxtro9GQ/TW-OS_FVmJI/AAAAAAAAALM/CtK-Gc_WIWs/s1600/ChangePassword.png" /&gt;&lt;br /&gt;&lt;br /&gt;A confirmation e-mail is sent to the user after the password has been changed.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-JuCipslvq5E/TW-OUdtr5fI/AAAAAAAAALg/YqvHLR6MJcs/s1600/PasswordChangedEmail.png" /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Login.aspx&lt;/h1&gt;A Web page that allows the user to sign in using his/her username or e-mail address and password.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-6AYQtp22cwE/TW-OV96KzqI/AAAAAAAAAL0/TYMdEHZvsGk/s1600/UserSignIn.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Logout.aspx&lt;/h1&gt;A Web page that signs the user out.&lt;br /&gt;
&lt;h1&gt;/Account/Register.aspx&lt;/h1&gt;A Web page that lets a user create a new account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-KlUoh0t88-4/TW-OTStjw2I/AAAAAAAAALU/me37mCKWqFc/s1600/CreateAccount.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PYPW_RlRfQE/TW-OTlWs5OI/AAAAAAAAALY/p5-EJ_LVjds/s1600/CreateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: After the user has registered an e-mail is sent with a link to &lt;i&gt;/Account/ActivateAccount.aspx&lt;/i&gt; to activate the user account and to validate the e-mail address of the user. The domain here is by default www.myapp.com, change the domain to the correct value for your development, staging, or production environment.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-ZlxpBhh7A6M/TW-YUMiidpI/AAAAAAAAAMM/kv8VyzOdLNo/s1600/ActivateAccountEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/ResetPassword.aspx&lt;/h1&gt;A Web page that lets the user reset his/her password if they have forgotten it. The user must answer the question he/she entered when he/she created the account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-T8jwXpGh7kw/TW-PTDeMQUI/AAAAAAAAAL4/EhZvKAI-H4k/s1600/ResetPassword1.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-VWgkDMoo0Ks/TW-PThwiP2I/AAAAAAAAAL8/2RhZpRh9lAE/s1600/ResetPassword2.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-74CxmHDYWGY/TW-PT_5i0yI/AAAAAAAAAMA/Po1cm3TX0fw/s1600/ResetPassword3.png" /&gt;&lt;br /&gt;&lt;br /&gt;The new automatically generated password is sent to the users e-mail address.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-W8WDxax8usY/TW-PULhheLI/AAAAAAAAAME/QNYUJgBFBus/s1600/ResetPasswordEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/UnlockAccount.aspx&lt;/h1&gt;A Web page that allows the user to unlock his/her user account in the case it has been locked out. After unlocking a confirmation is sent to the users e-mail address.&lt;br /&gt;
&lt;h1&gt;/Account/User.aspx&lt;/h1&gt;A Web page that shows the user profile. If the profile page belongs to the user that is viewing it the user can upload a picture and enter his/her gender. Here you can add/remove you own fields, the default fields are just there as an example. &lt;br /&gt;&lt;br /&gt;The default portrait field scales the uploaded image to a thumbnail and stores the processed image in the Azure Blob Storage. The gender field is stored in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-5f7svJgrNGM/TW-OU8jGUDI/AAAAAAAAALk/9qYo6YNx6WA/s1600/Profile.png" /&gt;&lt;br /&gt;
&lt;h2&gt;Querystring parameters&lt;/h2&gt;By default our own user profile page is displayed, if you want to see another users profile page then you can add the user name to the &amp;quot;name&amp;quot; querystring parameter, like this:&lt;br /&gt;&lt;br /&gt;http://example.com/Account/User.aspx?name=Admin&lt;br /&gt;&lt;br /&gt;The example above would show Admin&amp;#39;s user profile page.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-rmja5gJTjv8/TW-OUPCUtoI/AAAAAAAAALc/IYWrLa8LRhE/s1600/OtherUsersProfile.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Web.config&lt;/h1&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h1&gt;/Admin/InitApp.aspx&lt;/h1&gt;A Web page that initializes the AzureProviders application. You need to visit this page once to create:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;There is no harm in calling this page more than once. &lt;br /&gt;
&lt;h2&gt;History of InitApp.aspx&lt;/h2&gt;In earlier versions of AzureProviders this page was removed and the code moved to &lt;i&gt;Global.asax&lt;/i&gt; or the Azure Role &lt;i&gt;OnStart()&lt;/i&gt; method, but this attempt ultimately failed because of the context of the processes than ran them, and so the &lt;i&gt;/Admin/InitApp.asp&lt;/i&gt; web page was re-implemented again. &lt;br /&gt;&lt;br /&gt;If you have a better way of doing the initialization of AzureProviders then please let me know, but make sure that you have tested that it works in staging/production first and not just your development environment, like I mistakenly did.&lt;br /&gt;
&lt;h1&gt;/Admin/Roles.aspx&lt;/h1&gt;A Web page that lists all the ASP.NET Role Provider roles.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh3.googleusercontent.com/-LmdzOr3cQNw/TW-OVG1PllI/AAAAAAAAALo/rltnxNecKs0/s1600/Roles.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Sessions.aspx&lt;/h1&gt;A Web page that lists all the active ASP.NET Session Provider sessions.&lt;br /&gt;
&lt;h1&gt;/Admin/Statistics.aspx&lt;/h1&gt;A Web page that shows the total number of registered users and the number of online users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-IS5uPtRWNRg/TW-OVcMo2pI/AAAAAAAAALs/HHBR9oouoUU/s1600/Stats.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Users.aspx&lt;/h1&gt;A Web page that lists all the ASP.NET Membership Provider users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PiiIg8zqb1A/TW-X77f7i7I/AAAAAAAAAMI/gmIiXR0zspw/s1600/Users.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Web.config&lt;/h1&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h1&gt;Email.resx&lt;/h1&gt;E-mail message resources like e-mail header and footer.&lt;br /&gt;
&lt;h1&gt;Profile.resx&lt;/h1&gt;Resources used by the ASP.NET Profile Provider.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureMembershipProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Membership Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: If you are only interested in the membership provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the membership provider deceleration from Web.config.&lt;/b&gt;&lt;br /&gt;
&lt;h1&gt;/Bll/AzureProfileProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Profile Provider that stores all its data in the Azure Table and Blob Storage.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: If you are only interested in the profile provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the profile provider deceleration from Web.config.&lt;/b&gt;&lt;br /&gt;
&lt;h1&gt;/Bll/AzureRoleProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Role Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: If you are only interested in the role provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the role provider deceleration from Web.config.&lt;/b&gt;&lt;br /&gt;
&lt;h1&gt;/Bll/AzureSessionStateProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Session-State Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: If you are only interested in the session provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the session provider deceleration from Web.config.&lt;/b&gt;&lt;br /&gt;
&lt;h1&gt;/Bll/GraphicUtilities.cs&lt;/h1&gt;Business logic that lets you create thumbnails and resize images.&lt;br /&gt;
&lt;h1&gt;/Bll/InitApplication.cs&lt;/h1&gt;Business logic that creates:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;

&lt;h1&gt;/Ccc/EncryptionUtilities.cs&lt;/h1&gt;Business logic that makes a MD5 hash from a string.&lt;br /&gt;
&lt;h1&gt;/Images/&lt;/h1&gt;Image file folder.&lt;br /&gt;
&lt;h1&gt;/Scripts/&lt;/h1&gt;JavaScript file folder.&lt;br /&gt;
&lt;h1&gt;/Styles/&lt;/h1&gt;CSS file folder.&lt;br /&gt;
&lt;h1&gt;~/About.aspx&lt;/h1&gt;Some information about the AzureProviders solution.&lt;br /&gt;
&lt;h1&gt;Default.aspx&lt;/h1&gt;The start page. Demo&amp;#39;s the ASP.NET Session-State Provider by showing when the user session was started.&lt;br /&gt;
&lt;h1&gt;Global.asax&lt;/h1&gt;Initializes the Azure Cloud Storage Account when the Web application starts.&lt;br /&gt;
&lt;h1&gt;Site.master&lt;/h1&gt;Master page.&lt;br /&gt;
&lt;h1&gt;Web.config&lt;/h1&gt;&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;appSettings&amp;gt;&lt;/h2&gt;Key/value&amp;#39;s:
&lt;ul&gt;&lt;li&gt;StaticKey; A static key is used instead of machiekey to encrypt passwords since machinekey changes when in development&lt;/li&gt;
&lt;li&gt;fromEmail; (default=&amp;quot;do-not-reply@example.com&amp;quot;) This is the e-mail address that will be the sender on all the e-mails sent by this application&lt;/li&gt;
&lt;li&gt;AdminName; (default=&amp;quot;Admin&amp;quot;) By default a administrator user is made and this is its sign in name&lt;/li&gt;
&lt;li&gt;AdminEmail; (default=&amp;quot;admin@example.com&amp;quot;) By default a administrator user is made and this is its e-mail&lt;/li&gt;
&lt;li&gt;AdminPassword; (default=&amp;quot;Password&amp;quot;) By default a administrator user is made and this is its password&lt;/li&gt;
&lt;li&gt;AdminQuestion; (default=&amp;quot;Color of my first car?&amp;quot;) By default a administrator user is made and this is its password retrieval question&lt;/li&gt;
&lt;li&gt;AdminAnswer; (default=&amp;quot;Kiwi&amp;quot;) By default a administrator user is made and this is its password retrieval answer&lt;/li&gt;
&lt;li&gt;AdminRoleName; (default=&amp;quot;Admins&amp;quot;) By default a role is created to hold administrators and this is its name. Admin is added to this by default&lt;/li&gt;
&lt;li&gt;ApplicationName; (default=&amp;quot;MyApp1&amp;quot;) The name of your application, should match the one in the MultiThreadedWorkerRole &lt;i&gt;app.config&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;QueueDequeueRetrySleepSeconds; (default=3600) Number of seconds to wait before retrying if a message was dequeued in the Azure Queue&lt;/li&gt;
&lt;li&gt;UseNaglingWithTable; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;
&lt;li&gt;UseNaglingWithQueue; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;authentication&amp;gt;&amp;lt;forms&amp;gt;&lt;/h2&gt;Sets the ASP.NET login page to &lt;i&gt;/Account/Login.aspx&lt;/i&gt;&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;membership&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Membership Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;profile&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Profile Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;roleManager&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Role Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;sessionState&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Session-State Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;connectionManagement&amp;gt;&lt;/h2&gt;By default ASP.NET only allows 2 concurrent client requests, this is really inefficient as your Azure server instances has capabilities of processing many more simultaneous asynchronous requests. Because of this AzureProviders accepts 48 concurrent client requests by default, but you should really try and find the setting that works best for your solution. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;settings&amp;gt;&lt;/h2&gt;By default ASP.NET uses the HTTP Expect 100-Continue pattern, which can be a performance issue if your HTTP operations are small, because of this AzureProviders has turned HTTP Expect 100-Continue off. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Sun, 02 Oct 2011 08:59:49 GMT</pubDate><guid isPermaLink="false">Updated Wiki: WebPages project 20111002085949A</guid></item><item><title>Updated Wiki: WebPages project</title><link>http://azureproviders.codeplex.com/wikipage?title=WebPages project&amp;version=14</link><description>&lt;div class="wikidoc"&gt;The WebPages project is the start-up ASP.NET web application.&lt;br /&gt;
&lt;h1&gt;/Account/ActivateAccount.aspx&lt;/h1&gt;A Web page that a newly registered user needs to visit in order to sign in for the first time. An e-mail with a personal link to this page is sent after the user has registered by  &lt;i&gt;/Account/Register.aspx&lt;/i&gt;. The request parameter &amp;quot;Id&amp;quot; should contain the user id of the user that is to be activated, if not an error is displayed. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-ASfC43hrsK4/TW-OSBtMkgI/AAAAAAAAALE/WaRazFZoCbs/s1600/ActivateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-czgwsWF2KeA/TW-OTEFVMuI/AAAAAAAAALQ/1Ajhav041HU/s1600/ChangePasswordSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;After the user has activated his account a confirmation e-mail is sent to the user.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-tBTdEptbRhw/TW-ORGUde9I/AAAAAAAAAK8/8NHG26y6JIU/s1600/AccountActivatedEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/ChangePassword.aspx&lt;/h1&gt;A Web page that allows a user to change his/her password. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-zJKxxtro9GQ/TW-OS_FVmJI/AAAAAAAAALM/CtK-Gc_WIWs/s1600/ChangePassword.png" /&gt;&lt;br /&gt;&lt;br /&gt;A confirmation e-mail is sent to the user after the password has been changed.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-JuCipslvq5E/TW-OUdtr5fI/AAAAAAAAALg/YqvHLR6MJcs/s1600/PasswordChangedEmail.png" /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Login.aspx&lt;/h1&gt;A Web page that allows the user to sign in using his/her username or e-mail address and password.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-6AYQtp22cwE/TW-OV96KzqI/AAAAAAAAAL0/TYMdEHZvsGk/s1600/UserSignIn.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Logout.aspx&lt;/h1&gt;A Web page that signs the user out.&lt;br /&gt;
&lt;h1&gt;/Account/Register.aspx&lt;/h1&gt;A Web page that lets a user create a new account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-KlUoh0t88-4/TW-OTStjw2I/AAAAAAAAALU/me37mCKWqFc/s1600/CreateAccount.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PYPW_RlRfQE/TW-OTlWs5OI/AAAAAAAAALY/p5-EJ_LVjds/s1600/CreateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: After the user has registered an e-mail is sent with a link to &lt;i&gt;/Account/ActivateAccount.aspx&lt;/i&gt; to activate the user account and to validate the e-mail address of the user. The domain here is by default www.myapp.com, change the domain to the correct value for your development, staging, or production environment.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-ZlxpBhh7A6M/TW-YUMiidpI/AAAAAAAAAMM/kv8VyzOdLNo/s1600/ActivateAccountEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/ResetPassword.aspx&lt;/h1&gt;A Web page that lets the user reset his/her password if they have forgotten it. The user must answer the question he/she entered when he/she created the account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-T8jwXpGh7kw/TW-PTDeMQUI/AAAAAAAAAL4/EhZvKAI-H4k/s1600/ResetPassword1.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-VWgkDMoo0Ks/TW-PThwiP2I/AAAAAAAAAL8/2RhZpRh9lAE/s1600/ResetPassword2.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-74CxmHDYWGY/TW-PT_5i0yI/AAAAAAAAAMA/Po1cm3TX0fw/s1600/ResetPassword3.png" /&gt;&lt;br /&gt;&lt;br /&gt;The new automatically generated password is sent to the users e-mail address.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-W8WDxax8usY/TW-PULhheLI/AAAAAAAAAME/QNYUJgBFBus/s1600/ResetPasswordEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/UnlockAccount.aspx&lt;/h1&gt;A Web page that allows the user to unlock his/her user account in the case it has been locked out. After unlocking a confirmation is sent to the users e-mail address.&lt;br /&gt;
&lt;h1&gt;/Account/User.aspx&lt;/h1&gt;A Web page that shows the user profile. If the profile page belongs to the user that is viewing it the user can upload a picture and enter his/her gender. Here you can add/remove you own fields, the default fields are just there as an example. &lt;br /&gt;&lt;br /&gt;The default portrait field scales the uploaded image to a thumbnail and stores the processed image in the Azure Blob Storage. The gender field is stored in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-5f7svJgrNGM/TW-OU8jGUDI/AAAAAAAAALk/9qYo6YNx6WA/s1600/Profile.png" /&gt;&lt;br /&gt;
&lt;h2&gt;Querystring parameters&lt;/h2&gt;By default our own user profile page is displayed, if you want to see another users profile page then you can add the user name to the &amp;quot;name&amp;quot; querystring parameter, like this:&lt;br /&gt;&lt;br /&gt;http://example.com/Account/User.aspx?name=Admin&lt;br /&gt;&lt;br /&gt;The example above would show Admin&amp;#39;s user profile page.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-rmja5gJTjv8/TW-OUPCUtoI/AAAAAAAAALc/IYWrLa8LRhE/s1600/OtherUsersProfile.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Web.config&lt;/h1&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h1&gt;/Admin/InitApp.aspx&lt;/h1&gt;A Web page that initializes the AzureProviders application. You need to visit this page once to create:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;There is no harm in calling this page more than once. &lt;br /&gt;
&lt;h2&gt;History of InitApp.aspx&lt;/h2&gt;In earlier versions of AzureProviders this page was removed and the code moved to &lt;i&gt;Global.asax&lt;/i&gt; or the Azure Role &lt;i&gt;OnStart()&lt;/i&gt; method, but this attempt ultimately failed because of the context of the processes than ran them, and so the &lt;i&gt;/Admin/InitApp.asp&lt;/i&gt; web page was re-implemented again. &lt;br /&gt;&lt;br /&gt;If you have a better way of doing the initialization of AzureProviders then please let me know, but make sure that you have tested that it works in staging/production first and not just your development environment, like I mistakenly did.&lt;br /&gt;
&lt;h1&gt;/Admin/Roles.aspx&lt;/h1&gt;A Web page that lists all the ASP.NET Role Provider roles.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh3.googleusercontent.com/-LmdzOr3cQNw/TW-OVG1PllI/AAAAAAAAALo/rltnxNecKs0/s1600/Roles.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Sessions.aspx&lt;/h1&gt;A Web page that lists all the active ASP.NET Session Provider sessions.&lt;br /&gt;
&lt;h1&gt;/Admin/Statistics.aspx&lt;/h1&gt;A Web page that shows the total number of registered users and the number of online users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-IS5uPtRWNRg/TW-OVcMo2pI/AAAAAAAAALs/HHBR9oouoUU/s1600/Stats.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Users.aspx&lt;/h1&gt;A Web page that lists all the ASP.NET Membership Provider users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PiiIg8zqb1A/TW-X77f7i7I/AAAAAAAAAMI/gmIiXR0zspw/s1600/Users.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Web.config&lt;/h1&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h1&gt;Email.resx&lt;/h1&gt;E-mail message resources like e-mail header and footer.&lt;br /&gt;
&lt;h1&gt;Profile.resx&lt;/h1&gt;Resources used by the ASP.NET Profile Provider.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureMembershipProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Membership Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Note: If you are only interested in the membership provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the membership provider deceleration from Web.config **&lt;/li&gt;&lt;/ul&gt;

&lt;h1&gt;/Bll/AzureProfileProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Profile Provider that stores all its data in the Azure Table and Blob Storage.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Note: If you are only interested in the profile provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the profile provider deceleration from Web.config **&lt;/li&gt;&lt;/ul&gt;

&lt;h1&gt;/Bll/AzureRoleProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Role Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Note: If you are only interested in the role provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the role provider deceleration from Web.config **&lt;/li&gt;&lt;/ul&gt;

&lt;h1&gt;/Bll/AzureSessionStateProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Session-State Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Note: If you are only interested in the session provider code and not the rest of AzureProviders, then it is sufficient to copy this file and the session provider deceleration from Web.config **&lt;/li&gt;&lt;/ul&gt;

&lt;h1&gt;/Bll/GraphicUtilities.cs&lt;/h1&gt;Business logic that lets you create thumbnails and resize images.&lt;br /&gt;
&lt;h1&gt;/Bll/InitApplication.cs&lt;/h1&gt;Business logic that creates:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;

&lt;h1&gt;/Ccc/EncryptionUtilities.cs&lt;/h1&gt;Business logic that makes a MD5 hash from a string.&lt;br /&gt;
&lt;h1&gt;/Images/&lt;/h1&gt;Image file folder.&lt;br /&gt;
&lt;h1&gt;/Scripts/&lt;/h1&gt;JavaScript file folder.&lt;br /&gt;
&lt;h1&gt;/Styles/&lt;/h1&gt;CSS file folder.&lt;br /&gt;
&lt;h1&gt;~/About.aspx&lt;/h1&gt;Some information about the AzureProviders solution.&lt;br /&gt;
&lt;h1&gt;Default.aspx&lt;/h1&gt;The start page. Demo&amp;#39;s the ASP.NET Session-State Provider by showing when the user session was started.&lt;br /&gt;
&lt;h1&gt;Global.asax&lt;/h1&gt;Initializes the Azure Cloud Storage Account when the Web application starts.&lt;br /&gt;
&lt;h1&gt;Site.master&lt;/h1&gt;Master page.&lt;br /&gt;
&lt;h1&gt;Web.config&lt;/h1&gt;&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;appSettings&amp;gt;&lt;/h2&gt;Key/value&amp;#39;s:
&lt;ul&gt;&lt;li&gt;StaticKey; A static key is used instead of machiekey to encrypt passwords since machinekey changes when in development&lt;/li&gt;
&lt;li&gt;fromEmail; (default=&amp;quot;do-not-reply@example.com&amp;quot;) This is the e-mail address that will be the sender on all the e-mails sent by this application&lt;/li&gt;
&lt;li&gt;AdminName; (default=&amp;quot;Admin&amp;quot;) By default a administrator user is made and this is its sign in name&lt;/li&gt;
&lt;li&gt;AdminEmail; (default=&amp;quot;admin@example.com&amp;quot;) By default a administrator user is made and this is its e-mail&lt;/li&gt;
&lt;li&gt;AdminPassword; (default=&amp;quot;Password&amp;quot;) By default a administrator user is made and this is its password&lt;/li&gt;
&lt;li&gt;AdminQuestion; (default=&amp;quot;Color of my first car?&amp;quot;) By default a administrator user is made and this is its password retrieval question&lt;/li&gt;
&lt;li&gt;AdminAnswer; (default=&amp;quot;Kiwi&amp;quot;) By default a administrator user is made and this is its password retrieval answer&lt;/li&gt;
&lt;li&gt;AdminRoleName; (default=&amp;quot;Admins&amp;quot;) By default a role is created to hold administrators and this is its name. Admin is added to this by default&lt;/li&gt;
&lt;li&gt;ApplicationName; (default=&amp;quot;MyApp1&amp;quot;) The name of your application, should match the one in the MultiThreadedWorkerRole &lt;i&gt;app.config&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;QueueDequeueRetrySleepSeconds; (default=3600) Number of seconds to wait before retrying if a message was dequeued in the Azure Queue&lt;/li&gt;
&lt;li&gt;UseNaglingWithTable; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;
&lt;li&gt;UseNaglingWithQueue; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;authentication&amp;gt;&amp;lt;forms&amp;gt;&lt;/h2&gt;Sets the ASP.NET login page to &lt;i&gt;/Account/Login.aspx&lt;/i&gt;&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;membership&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Membership Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;profile&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Profile Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;roleManager&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Role Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;sessionState&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Session-State Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;connectionManagement&amp;gt;&lt;/h2&gt;By default ASP.NET only allows 2 concurrent client requests, this is really inefficient as your Azure server instances has capabilities of processing many more simultaneous asynchronous requests. Because of this AzureProviders accepts 48 concurrent client requests by default, but you should really try and find the setting that works best for your solution. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;settings&amp;gt;&lt;/h2&gt;By default ASP.NET uses the HTTP Expect 100-Continue pattern, which can be a performance issue if your HTTP operations are small, because of this AzureProviders has turned HTTP Expect 100-Continue off. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Sun, 02 Oct 2011 08:58:13 GMT</pubDate><guid isPermaLink="false">Updated Wiki: WebPages project 20111002085813A</guid></item><item><title>Updated Wiki: WebPages project</title><link>http://azureproviders.codeplex.com/wikipage?title=WebPages project&amp;version=13</link><description>&lt;div class="wikidoc"&gt;The WebPages project is the start-up ASP.NET web application.&lt;br /&gt;
&lt;h1&gt;/Account/ActivateAccount.aspx&lt;/h1&gt;A Web page that a newly registered user needs to visit in order to sign in for the first time. An e-mail with a personal link to this page is sent after the user has registered by  &lt;i&gt;/Account/Register.aspx&lt;/i&gt;. The request parameter &amp;quot;Id&amp;quot; should contain the user id of the user that is to be activated, if not an error is displayed. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-ASfC43hrsK4/TW-OSBtMkgI/AAAAAAAAALE/WaRazFZoCbs/s1600/ActivateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-czgwsWF2KeA/TW-OTEFVMuI/AAAAAAAAALQ/1Ajhav041HU/s1600/ChangePasswordSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;After the user has activated his account a confirmation e-mail is sent to the user.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-tBTdEptbRhw/TW-ORGUde9I/AAAAAAAAAK8/8NHG26y6JIU/s1600/AccountActivatedEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/ChangePassword.aspx&lt;/h1&gt;A Web page that allows a user to change his/her password. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-zJKxxtro9GQ/TW-OS_FVmJI/AAAAAAAAALM/CtK-Gc_WIWs/s1600/ChangePassword.png" /&gt;&lt;br /&gt;&lt;br /&gt;A confirmation e-mail is sent to the user after the password has been changed.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-JuCipslvq5E/TW-OUdtr5fI/AAAAAAAAALg/YqvHLR6MJcs/s1600/PasswordChangedEmail.png" /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Login.aspx&lt;/h1&gt;A Web page that allows the user to sign in using his/her username or e-mail address and password.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-6AYQtp22cwE/TW-OV96KzqI/AAAAAAAAAL0/TYMdEHZvsGk/s1600/UserSignIn.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Logout.aspx&lt;/h1&gt;A Web page that signs the user out.&lt;br /&gt;
&lt;h1&gt;/Account/Register.aspx&lt;/h1&gt;A Web page that lets a user create a new account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-KlUoh0t88-4/TW-OTStjw2I/AAAAAAAAALU/me37mCKWqFc/s1600/CreateAccount.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PYPW_RlRfQE/TW-OTlWs5OI/AAAAAAAAALY/p5-EJ_LVjds/s1600/CreateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: After the user has registered an e-mail is sent with a link to &lt;i&gt;/Account/ActivateAccount.aspx&lt;/i&gt; to activate the user account and to validate the e-mail address of the user. The domain here is by default www.myapp.com, change the domain to the correct value for your development, staging, or production environment.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-ZlxpBhh7A6M/TW-YUMiidpI/AAAAAAAAAMM/kv8VyzOdLNo/s1600/ActivateAccountEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/ResetPassword.aspx&lt;/h1&gt;A Web page that lets the user reset his/her password if they have forgotten it. The user must answer the question he/she entered when he/she created the account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-T8jwXpGh7kw/TW-PTDeMQUI/AAAAAAAAAL4/EhZvKAI-H4k/s1600/ResetPassword1.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-VWgkDMoo0Ks/TW-PThwiP2I/AAAAAAAAAL8/2RhZpRh9lAE/s1600/ResetPassword2.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-74CxmHDYWGY/TW-PT_5i0yI/AAAAAAAAAMA/Po1cm3TX0fw/s1600/ResetPassword3.png" /&gt;&lt;br /&gt;&lt;br /&gt;The new automatically generated password is sent to the users e-mail address.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-W8WDxax8usY/TW-PULhheLI/AAAAAAAAAME/QNYUJgBFBus/s1600/ResetPasswordEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/UnlockAccount.aspx&lt;/h1&gt;A Web page that allows the user to unlock his/her user account in the case it has been locked out. After unlocking a confirmation is sent to the users e-mail address.&lt;br /&gt;
&lt;h1&gt;/Account/User.aspx&lt;/h1&gt;A Web page that shows the user profile. If the profile page belongs to the user that is viewing it the user can upload a picture and enter his/her gender. Here you can add/remove you own fields, the default fields are just there as an example. &lt;br /&gt;&lt;br /&gt;The default portrait field scales the uploaded image to a thumbnail and stores the processed image in the Azure Blob Storage. The gender field is stored in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-5f7svJgrNGM/TW-OU8jGUDI/AAAAAAAAALk/9qYo6YNx6WA/s1600/Profile.png" /&gt;&lt;br /&gt;
&lt;h2&gt;Querystring parameters&lt;/h2&gt;By default our own user profile page is displayed, if you want to see another users profile page then you can add the user name to the &amp;quot;name&amp;quot; querystring parameter, like this:&lt;br /&gt;&lt;br /&gt;http://example.com/Account/User.aspx?name=Admin&lt;br /&gt;&lt;br /&gt;The example above would show Admin&amp;#39;s user profile page.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-rmja5gJTjv8/TW-OUPCUtoI/AAAAAAAAALc/IYWrLa8LRhE/s1600/OtherUsersProfile.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Web.config&lt;/h1&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h1&gt;/Admin/InitApp.aspx&lt;/h1&gt;A Web page that initializes the AzureProviders application. You need to visit this page once to create:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;There is no harm in calling this page more than once. &lt;br /&gt;
&lt;h2&gt;History of InitApp.aspx&lt;/h2&gt;In earlier versions of AzureProviders this page was removed and the code moved to &lt;i&gt;Global.asax&lt;/i&gt; or the Azure Role &lt;i&gt;OnStart()&lt;/i&gt; method, but this attempt ultimately failed because of the context of the processes than ran them, and so the &lt;i&gt;/Admin/InitApp.asp&lt;/i&gt; web page was re-implemented again. &lt;br /&gt;&lt;br /&gt;If you have a better way of doing the initialization of AzureProviders then please let me know, but make sure that you have tested that it works in staging/production first and not just your development environment, like I mistakenly did.&lt;br /&gt;
&lt;h1&gt;/Admin/Roles.aspx&lt;/h1&gt;A Web page that lists all the ASP.NET Role Provider roles.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh3.googleusercontent.com/-LmdzOr3cQNw/TW-OVG1PllI/AAAAAAAAALo/rltnxNecKs0/s1600/Roles.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Sessions.aspx&lt;/h1&gt;A Web page that lists all the active ASP.NET Session Provider sessions.&lt;br /&gt;
&lt;h1&gt;/Admin/Statistics.aspx&lt;/h1&gt;A Web page that shows the total number of registered users and the number of online users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-IS5uPtRWNRg/TW-OVcMo2pI/AAAAAAAAALs/HHBR9oouoUU/s1600/Stats.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Users.aspx&lt;/h1&gt;A Web page that lists all the ASP.NET Membership Provider users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PiiIg8zqb1A/TW-X77f7i7I/AAAAAAAAAMI/gmIiXR0zspw/s1600/Users.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Web.config&lt;/h1&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h1&gt;Email.resx&lt;/h1&gt;E-mail message resources like e-mail header and footer.&lt;br /&gt;
&lt;h1&gt;Profile.resx&lt;/h1&gt;Resources used by the ASP.NET Profile Provider.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureMembershipProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Membership Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureProfileProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Profile Provider that stores all its data in the Azure Table and Blob Storage.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureRoleProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Role Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureSessionStateProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Session-State Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;
&lt;h1&gt;/Bll/GraphicUtilities.cs&lt;/h1&gt;Business logic that lets you create thumbnails and resize images.&lt;br /&gt;
&lt;h1&gt;/Bll/InitApplication.cs&lt;/h1&gt;Business logic that creates:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;

&lt;h1&gt;/Ccc/EncryptionUtilities.cs&lt;/h1&gt;Business logic that makes a MD5 hash from a string.&lt;br /&gt;
&lt;h1&gt;/Images/&lt;/h1&gt;Image file folder.&lt;br /&gt;
&lt;h1&gt;/Scripts/&lt;/h1&gt;JavaScript file folder.&lt;br /&gt;
&lt;h1&gt;/Styles/&lt;/h1&gt;CSS file folder.&lt;br /&gt;
&lt;h1&gt;~/About.aspx&lt;/h1&gt;Some information about the AzureProviders solution.&lt;br /&gt;
&lt;h1&gt;Default.aspx&lt;/h1&gt;The start page. Demo&amp;#39;s the ASP.NET Session-State Provider by showing when the user session was started.&lt;br /&gt;
&lt;h1&gt;Global.asax&lt;/h1&gt;Initializes the Azure Cloud Storage Account when the Web application starts.&lt;br /&gt;
&lt;h1&gt;Site.master&lt;/h1&gt;Master page.&lt;br /&gt;
&lt;h1&gt;Web.config&lt;/h1&gt;&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;appSettings&amp;gt;&lt;/h2&gt;Key/value&amp;#39;s:
&lt;ul&gt;&lt;li&gt;StaticKey; A static key is used instead of machiekey to encrypt passwords since machinekey changes when in development&lt;/li&gt;
&lt;li&gt;fromEmail; (default=&amp;quot;do-not-reply@example.com&amp;quot;) This is the e-mail address that will be the sender on all the e-mails sent by this application&lt;/li&gt;
&lt;li&gt;AdminName; (default=&amp;quot;Admin&amp;quot;) By default a administrator user is made and this is its sign in name&lt;/li&gt;
&lt;li&gt;AdminEmail; (default=&amp;quot;admin@example.com&amp;quot;) By default a administrator user is made and this is its e-mail&lt;/li&gt;
&lt;li&gt;AdminPassword; (default=&amp;quot;Password&amp;quot;) By default a administrator user is made and this is its password&lt;/li&gt;
&lt;li&gt;AdminQuestion; (default=&amp;quot;Color of my first car?&amp;quot;) By default a administrator user is made and this is its password retrieval question&lt;/li&gt;
&lt;li&gt;AdminAnswer; (default=&amp;quot;Kiwi&amp;quot;) By default a administrator user is made and this is its password retrieval answer&lt;/li&gt;
&lt;li&gt;AdminRoleName; (default=&amp;quot;Admins&amp;quot;) By default a role is created to hold administrators and this is its name. Admin is added to this by default&lt;/li&gt;
&lt;li&gt;ApplicationName; (default=&amp;quot;MyApp1&amp;quot;) The name of your application, should match the one in the MultiThreadedWorkerRole &lt;i&gt;app.config&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;QueueDequeueRetrySleepSeconds; (default=3600) Number of seconds to wait before retrying if a message was dequeued in the Azure Queue&lt;/li&gt;
&lt;li&gt;UseNaglingWithTable; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;
&lt;li&gt;UseNaglingWithQueue; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;authentication&amp;gt;&amp;lt;forms&amp;gt;&lt;/h2&gt;Sets the ASP.NET login page to &lt;i&gt;/Account/Login.aspx&lt;/i&gt;&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;membership&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Membership Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;profile&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Profile Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;roleManager&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Role Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;sessionState&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Session-State Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;connectionManagement&amp;gt;&lt;/h2&gt;By default ASP.NET only allows 2 concurrent client requests, this is really inefficient as your Azure server instances has capabilities of processing many more simultaneous asynchronous requests. Because of this AzureProviders accepts 48 concurrent client requests by default, but you should really try and find the setting that works best for your solution. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;settings&amp;gt;&lt;/h2&gt;By default ASP.NET uses the HTTP Expect 100-Continue pattern, which can be a performance issue if your HTTP operations are small, because of this AzureProviders has turned HTTP Expect 100-Continue off. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Sun, 02 Oct 2011 08:50:49 GMT</pubDate><guid isPermaLink="false">Updated Wiki: WebPages project 20111002085049A</guid></item><item><title>Updated Wiki: WebPages project</title><link>http://azureproviders.codeplex.com/wikipage?title=WebPages project&amp;version=12</link><description>&lt;div class="wikidoc"&gt;The WebPages project is the start-up ASP.NET web application.&lt;br /&gt;
&lt;h1&gt;/Account/ActivateAccount.aspx&lt;/h1&gt;A Web page that a newly registered user needs to visit in order to sign in for the first time. An e-mail with a personal link to this page is sent after the user has registered by  &lt;i&gt;/Account/Register.aspx&lt;/i&gt;. The request parameter &amp;quot;Id&amp;quot; should contain the user id of the user that is to be activated, if not an error is displayed. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-ASfC43hrsK4/TW-OSBtMkgI/AAAAAAAAALE/WaRazFZoCbs/s1600/ActivateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-czgwsWF2KeA/TW-OTEFVMuI/AAAAAAAAALQ/1Ajhav041HU/s1600/ChangePasswordSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;After the user has activated his account a confirmation e-mail is sent to the user.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-tBTdEptbRhw/TW-ORGUde9I/AAAAAAAAAK8/8NHG26y6JIU/s1600/AccountActivatedEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/ChangePassword.aspx&lt;/h1&gt;A Web page that allows a user to change his/her password. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-zJKxxtro9GQ/TW-OS_FVmJI/AAAAAAAAALM/CtK-Gc_WIWs/s1600/ChangePassword.png" /&gt;&lt;br /&gt;&lt;br /&gt;A confirmation e-mail is sent to the user after the password has been changed.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-JuCipslvq5E/TW-OUdtr5fI/AAAAAAAAALg/YqvHLR6MJcs/s1600/PasswordChangedEmail.png" /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Login.aspx&lt;/h1&gt;A Web page that allows the user to sign in using his/her username or e-mail address and password.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-6AYQtp22cwE/TW-OV96KzqI/AAAAAAAAAL0/TYMdEHZvsGk/s1600/UserSignIn.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Logout.aspx&lt;/h1&gt;A Web page that signs the user out.&lt;br /&gt;
&lt;h1&gt;/Account/Register.aspx&lt;/h1&gt;A Web page that lets a user create a new account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-KlUoh0t88-4/TW-OTStjw2I/AAAAAAAAALU/me37mCKWqFc/s1600/CreateAccount.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PYPW_RlRfQE/TW-OTlWs5OI/AAAAAAAAALY/p5-EJ_LVjds/s1600/CreateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: After the user has registered an e-mail is sent with a link to &lt;i&gt;/Account/ActivateAccount.aspx&lt;/i&gt; to activate the user account and to validate the e-mail address of the user. The domain here is by default www.myapp.com, change the domain to the correct value for your development, staging, or production environment.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-ZlxpBhh7A6M/TW-YUMiidpI/AAAAAAAAAMM/kv8VyzOdLNo/s1600/ActivateAccountEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/ResetPassword.aspx&lt;/h1&gt;A Web page that lets the user reset his/her password if they have forgotten it. The user must answer the question he/she entered when he/she created the account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-T8jwXpGh7kw/TW-PTDeMQUI/AAAAAAAAAL4/EhZvKAI-H4k/s1600/ResetPassword1.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-VWgkDMoo0Ks/TW-PThwiP2I/AAAAAAAAAL8/2RhZpRh9lAE/s1600/ResetPassword2.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-74CxmHDYWGY/TW-PT_5i0yI/AAAAAAAAAMA/Po1cm3TX0fw/s1600/ResetPassword3.png" /&gt;&lt;br /&gt;&lt;br /&gt;The new automatically generated password is sent to the users e-mail address.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-W8WDxax8usY/TW-PULhheLI/AAAAAAAAAME/QNYUJgBFBus/s1600/ResetPasswordEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/UnlockAccount.aspx&lt;/h1&gt;A Web page that allows the user to unlock his/her user account in the case it has been locked out. After unlocking a confirmation is sent to the users e-mail address.&lt;br /&gt;
&lt;h1&gt;/Account/User.aspx&lt;/h1&gt;A Web page that shows the user profile. If the profile page belongs to the user that is viewing it the user can upload a picture and enter his/her gender. Here you can add/remove you own fields, the default fields are just there as an example. &lt;br /&gt;&lt;br /&gt;The default portrait field scales the uploaded image to a thumbnail and stores the processed image in the Azure Blob Storage. The gender field is stored in the Azure Table Storage.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-5f7svJgrNGM/TW-OU8jGUDI/AAAAAAAAALk/9qYo6YNx6WA/s1600/Profile.png" /&gt;&lt;br /&gt;
&lt;h2&gt;Querystring parameters&lt;/h2&gt;By default our own user profile page is displayed, if you want to see another users profile page then you can add the user name to the &amp;quot;name&amp;quot; querystring parameter, like this:&lt;br /&gt;&lt;br /&gt;http://example.com/Account/User.aspx?name=Admin&lt;br /&gt;&lt;br /&gt;The example above would show Admin&amp;#39;s user profile page.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-rmja5gJTjv8/TW-OUPCUtoI/AAAAAAAAALc/IYWrLa8LRhE/s1600/OtherUsersProfile.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Web.config&lt;/h1&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h1&gt;/Admin/InitApp.aspx&lt;/h1&gt;A Web page that initializes the AzureProviders application. You need to visit this page once to create:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;There is no harm in calling this page more than once. In earlier versions of AzureProviders this page was removed and the code moved to &lt;i&gt;Global.asax&lt;/i&gt; or the Azure Role &lt;i&gt;OnStart()&lt;/i&gt; method, but this attempt ultimately failed because of the context of the processes than ran them, and so the &lt;i&gt;/Admin/InitApp.asp&lt;/i&gt; web page was re-implemented again.&lt;br /&gt;
&lt;h1&gt;/Admin/Roles.aspx&lt;/h1&gt;A Web page that lists all the ASP.NET Role Provider roles.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh3.googleusercontent.com/-LmdzOr3cQNw/TW-OVG1PllI/AAAAAAAAALo/rltnxNecKs0/s1600/Roles.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Sessions.aspx&lt;/h1&gt;A Web page that lists all the active ASP.NET Session Provider sessions.&lt;br /&gt;
&lt;h1&gt;/Admin/Statistics.aspx&lt;/h1&gt;A Web page that shows the total number of registered users and the number of online users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-IS5uPtRWNRg/TW-OVcMo2pI/AAAAAAAAALs/HHBR9oouoUU/s1600/Stats.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Users.aspx&lt;/h1&gt;A Web page that lists all the ASP.NET Membership Provider users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PiiIg8zqb1A/TW-X77f7i7I/AAAAAAAAAMI/gmIiXR0zspw/s1600/Users.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Web.config&lt;/h1&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h1&gt;Email.resx&lt;/h1&gt;E-mail message resources like e-mail header and footer.&lt;br /&gt;
&lt;h1&gt;Profile.resx&lt;/h1&gt;Resources used by the ASP.NET Profile Provider.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureMembershipProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Membership Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureProfileProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Profile Provider that stores all its data in the Azure Table and Blob Storage.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureRoleProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Role Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureSessionStateProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Session-State Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;
&lt;h1&gt;/Bll/GraphicUtilities.cs&lt;/h1&gt;Business logic that lets you create thumbnails and resize images.&lt;br /&gt;
&lt;h1&gt;/Bll/InitApplication.cs&lt;/h1&gt;Business logic that creates:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;

&lt;h1&gt;/Ccc/EncryptionUtilities.cs&lt;/h1&gt;Business logic that makes a MD5 hash from a string.&lt;br /&gt;
&lt;h1&gt;/Images/&lt;/h1&gt;Image file folder.&lt;br /&gt;
&lt;h1&gt;/Scripts/&lt;/h1&gt;JavaScript file folder.&lt;br /&gt;
&lt;h1&gt;/Styles/&lt;/h1&gt;CSS file folder.&lt;br /&gt;
&lt;h1&gt;~/About.aspx&lt;/h1&gt;Some information about the AzureProviders solution.&lt;br /&gt;
&lt;h1&gt;Default.aspx&lt;/h1&gt;The start page. Demo&amp;#39;s the ASP.NET Session-State Provider by showing when the user session was started.&lt;br /&gt;
&lt;h1&gt;Global.asax&lt;/h1&gt;Initializes the Azure Cloud Storage Account when the Web application starts.&lt;br /&gt;
&lt;h1&gt;Site.master&lt;/h1&gt;Master page.&lt;br /&gt;
&lt;h1&gt;Web.config&lt;/h1&gt;&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;appSettings&amp;gt;&lt;/h2&gt;Key/value&amp;#39;s:
&lt;ul&gt;&lt;li&gt;StaticKey; A static key is used instead of machiekey to encrypt passwords since machinekey changes when in development&lt;/li&gt;
&lt;li&gt;fromEmail; (default=&amp;quot;do-not-reply@example.com&amp;quot;) This is the e-mail address that will be the sender on all the e-mails sent by this application&lt;/li&gt;
&lt;li&gt;AdminName; (default=&amp;quot;Admin&amp;quot;) By default a administrator user is made and this is its sign in name&lt;/li&gt;
&lt;li&gt;AdminEmail; (default=&amp;quot;admin@example.com&amp;quot;) By default a administrator user is made and this is its e-mail&lt;/li&gt;
&lt;li&gt;AdminPassword; (default=&amp;quot;Password&amp;quot;) By default a administrator user is made and this is its password&lt;/li&gt;
&lt;li&gt;AdminQuestion; (default=&amp;quot;Color of my first car?&amp;quot;) By default a administrator user is made and this is its password retrieval question&lt;/li&gt;
&lt;li&gt;AdminAnswer; (default=&amp;quot;Kiwi&amp;quot;) By default a administrator user is made and this is its password retrieval answer&lt;/li&gt;
&lt;li&gt;AdminRoleName; (default=&amp;quot;Admins&amp;quot;) By default a role is created to hold administrators and this is its name. Admin is added to this by default&lt;/li&gt;
&lt;li&gt;ApplicationName; (default=&amp;quot;MyApp1&amp;quot;) The name of your application, should match the one in the MultiThreadedWorkerRole &lt;i&gt;app.config&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;QueueDequeueRetrySleepSeconds; (default=3600) Number of seconds to wait before retrying if a message was dequeued in the Azure Queue&lt;/li&gt;
&lt;li&gt;UseNaglingWithTable; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;
&lt;li&gt;UseNaglingWithQueue; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;authentication&amp;gt;&amp;lt;forms&amp;gt;&lt;/h2&gt;Sets the ASP.NET login page to &lt;i&gt;/Account/Login.aspx&lt;/i&gt;&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;membership&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Membership Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;profile&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Profile Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;roleManager&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Role Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;sessionState&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Session-State Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;connectionManagement&amp;gt;&lt;/h2&gt;By default ASP.NET only allows 2 concurrent client requests, this is really inefficient as your Azure server instances has capabilities of processing many more simultaneous asynchronous requests. Because of this AzureProviders accepts 48 concurrent client requests by default, but you should really try and find the setting that works best for your solution. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;settings&amp;gt;&lt;/h2&gt;By default ASP.NET uses the HTTP Expect 100-Continue pattern, which can be a performance issue if your HTTP operations are small, because of this AzureProviders has turned HTTP Expect 100-Continue off. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Sun, 02 Oct 2011 08:44:19 GMT</pubDate><guid isPermaLink="false">Updated Wiki: WebPages project 20111002084419A</guid></item><item><title>Updated Wiki: WebPages project</title><link>http://azureproviders.codeplex.com/wikipage?title=WebPages project&amp;version=11</link><description>&lt;div class="wikidoc"&gt;The WebPages project is the start-up ASP.NET web application.&lt;br /&gt;
&lt;h1&gt;/Account/ActivateAccount.aspx&lt;/h1&gt;A Web page that a newly registered user needs to visit in order to sign in for the first time. An e-mail with a personal link to this page is sent after the user has registered by  &lt;i&gt;/Account/Register.aspx&lt;/i&gt;. The request parameter &amp;quot;Id&amp;quot; should contain the user id of the user that is to be activated, if not an error is displayed. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-ASfC43hrsK4/TW-OSBtMkgI/AAAAAAAAALE/WaRazFZoCbs/s1600/ActivateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-czgwsWF2KeA/TW-OTEFVMuI/AAAAAAAAALQ/1Ajhav041HU/s1600/ChangePasswordSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;After the user has activated his account a confirmation e-mail is sent to the user.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-tBTdEptbRhw/TW-ORGUde9I/AAAAAAAAAK8/8NHG26y6JIU/s1600/AccountActivatedEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/ChangePassword.aspx&lt;/h1&gt;A Web page that allows a user to change his/her password. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-zJKxxtro9GQ/TW-OS_FVmJI/AAAAAAAAALM/CtK-Gc_WIWs/s1600/ChangePassword.png" /&gt;&lt;br /&gt;&lt;br /&gt;A confirmation e-mail is sent to the user after the password has been changed.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-JuCipslvq5E/TW-OUdtr5fI/AAAAAAAAALg/YqvHLR6MJcs/s1600/PasswordChangedEmail.png" /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Login.aspx&lt;/h1&gt;A Web page that allows the user to sign in using his/her username or e-mail address and password.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-6AYQtp22cwE/TW-OV96KzqI/AAAAAAAAAL0/TYMdEHZvsGk/s1600/UserSignIn.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Logout.aspx&lt;/h1&gt;A Web page that signs the user out.&lt;br /&gt;
&lt;h1&gt;/Account/Register.aspx&lt;/h1&gt;A Web page that lets a user create a new account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-KlUoh0t88-4/TW-OTStjw2I/AAAAAAAAALU/me37mCKWqFc/s1600/CreateAccount.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PYPW_RlRfQE/TW-OTlWs5OI/AAAAAAAAALY/p5-EJ_LVjds/s1600/CreateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note: After the user has registered an e-mail is sent with a link to &lt;i&gt;/Account/ActivateAccount.aspx&lt;/i&gt; to activate the user account and to validate the e-mail address of the user. The domain here is by default www.myapp.com, change the domain to the correct value for your development, staging, or production environment.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-ZlxpBhh7A6M/TW-YUMiidpI/AAAAAAAAAMM/kv8VyzOdLNo/s1600/ActivateAccountEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/ResetPassword.aspx&lt;/h1&gt;A Web page that lets the user reset his/her password if they have forgotten it. The user must answer the question he/she entered when he/she created the account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-T8jwXpGh7kw/TW-PTDeMQUI/AAAAAAAAAL4/EhZvKAI-H4k/s1600/ResetPassword1.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-VWgkDMoo0Ks/TW-PThwiP2I/AAAAAAAAAL8/2RhZpRh9lAE/s1600/ResetPassword2.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-74CxmHDYWGY/TW-PT_5i0yI/AAAAAAAAAMA/Po1cm3TX0fw/s1600/ResetPassword3.png" /&gt;&lt;br /&gt;&lt;br /&gt;The new automatically generated password is sent to the users e-mail address.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-W8WDxax8usY/TW-PULhheLI/AAAAAAAAAME/QNYUJgBFBus/s1600/ResetPasswordEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/UnlockAccount.aspx&lt;/h1&gt;A Web page that allows the user to unlock his/her user account in the case it has been locked out. After unlocking a confirmation is sent to the users e-mail address.&lt;br /&gt;
&lt;h1&gt;/Account/User.aspx&lt;/h1&gt;A Web page that shows the user profile. If the profile page belongs to the user that is viewing it the user can upload a picture and enter his/her gender. Here you can add/remove you own fields, the default fields are just there as an example.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-5f7svJgrNGM/TW-OU8jGUDI/AAAAAAAAALk/9qYo6YNx6WA/s1600/Profile.png" /&gt;&lt;br /&gt;
&lt;h2&gt;Querystring parameters&lt;/h2&gt;By default our own user profile page is displayed, if you want to see another users profile page then you can add the user name to the &amp;quot;name&amp;quot; querystring parameter, like this:&lt;br /&gt;&lt;br /&gt;http://example.com/Account/User.aspx?name=Admin&lt;br /&gt;&lt;br /&gt;The example above would show Admin&amp;#39;s user profile page.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-rmja5gJTjv8/TW-OUPCUtoI/AAAAAAAAALc/IYWrLa8LRhE/s1600/OtherUsersProfile.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Web.config&lt;/h1&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h1&gt;/Admin/InitApp.aspx&lt;/h1&gt;A Web page that initializes the AzureProviders application. You need to visit this page once to create:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;There is no harm in calling this page more than once. In earlier versions of AzureProviders this page was removed and the code moved to &lt;i&gt;Global.asax&lt;/i&gt; or the Azure Role &lt;i&gt;OnStart()&lt;/i&gt; method, but this attempt ultimately failed because of the context of the processes than ran them, and so the &lt;i&gt;/Admin/InitApp.asp&lt;/i&gt; web page was re-implemented again.&lt;br /&gt;
&lt;h1&gt;/Admin/Roles.aspx&lt;/h1&gt;A Web page that lists all the ASP.NET Role Provider roles.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh3.googleusercontent.com/-LmdzOr3cQNw/TW-OVG1PllI/AAAAAAAAALo/rltnxNecKs0/s1600/Roles.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Sessions.aspx&lt;/h1&gt;A Web page that lists all the active ASP.NET Session Provider sessions.&lt;br /&gt;
&lt;h1&gt;/Admin/Statistics.aspx&lt;/h1&gt;A Web page that shows the total number of registered users and the number of online users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-IS5uPtRWNRg/TW-OVcMo2pI/AAAAAAAAALs/HHBR9oouoUU/s1600/Stats.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Users.aspx&lt;/h1&gt;A Web page that lists all the ASP.NET Membership Provider users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PiiIg8zqb1A/TW-X77f7i7I/AAAAAAAAAMI/gmIiXR0zspw/s1600/Users.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Web.config&lt;/h1&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h1&gt;Email.resx&lt;/h1&gt;E-mail message resources like e-mail header and footer.&lt;br /&gt;
&lt;h1&gt;Profile.resx&lt;/h1&gt;Resources used by the ASP.NET Profile Provider.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureMembershipProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Membership Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureProfileProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Profile Provider that stores all its data in the Azure Table and Blob Storage.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureRoleProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Role Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureSessionStateProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Session-State Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;
&lt;h1&gt;/Bll/GraphicUtilities.cs&lt;/h1&gt;Business logic that lets you create thumbnails and resize images.&lt;br /&gt;
&lt;h1&gt;/Bll/InitApplication.cs&lt;/h1&gt;Business logic that creates:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;

&lt;h1&gt;/Ccc/EncryptionUtilities.cs&lt;/h1&gt;Business logic that makes a MD5 hash from a string.&lt;br /&gt;
&lt;h1&gt;/Images/&lt;/h1&gt;Image file folder.&lt;br /&gt;
&lt;h1&gt;/Scripts/&lt;/h1&gt;JavaScript file folder.&lt;br /&gt;
&lt;h1&gt;/Styles/&lt;/h1&gt;CSS file folder.&lt;br /&gt;
&lt;h1&gt;~/About.aspx&lt;/h1&gt;Some information about the AzureProviders solution.&lt;br /&gt;
&lt;h1&gt;Default.aspx&lt;/h1&gt;The start page. Demo&amp;#39;s the ASP.NET Session-State Provider by showing when the user session was started.&lt;br /&gt;
&lt;h1&gt;Global.asax&lt;/h1&gt;Initializes the Azure Cloud Storage Account when the Web application starts.&lt;br /&gt;
&lt;h1&gt;Site.master&lt;/h1&gt;Master page.&lt;br /&gt;
&lt;h1&gt;Web.config&lt;/h1&gt;&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;appSettings&amp;gt;&lt;/h2&gt;Key/value&amp;#39;s:
&lt;ul&gt;&lt;li&gt;StaticKey; A static key is used instead of machiekey to encrypt passwords since machinekey changes when in development&lt;/li&gt;
&lt;li&gt;fromEmail; (default=&amp;quot;do-not-reply@example.com&amp;quot;) This is the e-mail address that will be the sender on all the e-mails sent by this application&lt;/li&gt;
&lt;li&gt;AdminName; (default=&amp;quot;Admin&amp;quot;) By default a administrator user is made and this is its sign in name&lt;/li&gt;
&lt;li&gt;AdminEmail; (default=&amp;quot;admin@example.com&amp;quot;) By default a administrator user is made and this is its e-mail&lt;/li&gt;
&lt;li&gt;AdminPassword; (default=&amp;quot;Password&amp;quot;) By default a administrator user is made and this is its password&lt;/li&gt;
&lt;li&gt;AdminQuestion; (default=&amp;quot;Color of my first car?&amp;quot;) By default a administrator user is made and this is its password retrieval question&lt;/li&gt;
&lt;li&gt;AdminAnswer; (default=&amp;quot;Kiwi&amp;quot;) By default a administrator user is made and this is its password retrieval answer&lt;/li&gt;
&lt;li&gt;AdminRoleName; (default=&amp;quot;Admins&amp;quot;) By default a role is created to hold administrators and this is its name. Admin is added to this by default&lt;/li&gt;
&lt;li&gt;ApplicationName; (default=&amp;quot;MyApp1&amp;quot;) The name of your application, should match the one in the MultiThreadedWorkerRole &lt;i&gt;app.config&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;QueueDequeueRetrySleepSeconds; (default=3600) Number of seconds to wait before retrying if a message was dequeued in the Azure Queue&lt;/li&gt;
&lt;li&gt;UseNaglingWithTable; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;
&lt;li&gt;UseNaglingWithQueue; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;authentication&amp;gt;&amp;lt;forms&amp;gt;&lt;/h2&gt;Sets the ASP.NET login page to &lt;i&gt;/Account/Login.aspx&lt;/i&gt;&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;membership&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Membership Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;profile&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Profile Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;roleManager&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Role Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;sessionState&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Session-State Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;connectionManagement&amp;gt;&lt;/h2&gt;By default ASP.NET only allows 2 concurrent client requests, this is really inefficient as your Azure server instances has capabilities of processing many more simultaneous asynchronous requests. Because of this AzureProviders accepts 48 concurrent client requests by default, but you should really try and find the setting that works best for your solution. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;settings&amp;gt;&lt;/h2&gt;By default ASP.NET uses the HTTP Expect 100-Continue pattern, which can be a performance issue if your HTTP operations are small, because of this AzureProviders has turned HTTP Expect 100-Continue off. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Sun, 02 Oct 2011 08:27:45 GMT</pubDate><guid isPermaLink="false">Updated Wiki: WebPages project 20111002082745A</guid></item><item><title>Updated Wiki: WebPages project</title><link>http://azureproviders.codeplex.com/wikipage?title=WebPages project&amp;version=10</link><description>&lt;div class="wikidoc"&gt;The WebPages project is the start-up ASP.NET web application.&lt;br /&gt;
&lt;h1&gt;/Account/ActivateAccount.aspx&lt;/h1&gt;A Web page that a newly registered user needs to visit in order to sign in for the first time. An e-mail with a personal link to this page is sent after the user has registered by  &lt;i&gt;/Account/Register.aspx&lt;/i&gt;. The request parameter &amp;quot;Id&amp;quot; should contain the user id of the user that is to be activated, if not an error is displayed. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-ASfC43hrsK4/TW-OSBtMkgI/AAAAAAAAALE/WaRazFZoCbs/s1600/ActivateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-czgwsWF2KeA/TW-OTEFVMuI/AAAAAAAAALQ/1Ajhav041HU/s1600/ChangePasswordSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;After the user has activated his account a confirmation e-mail is sent to the user.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-tBTdEptbRhw/TW-ORGUde9I/AAAAAAAAAK8/8NHG26y6JIU/s1600/AccountActivatedEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/ChangePassword.aspx&lt;/h1&gt;A Web page that allows a user to change his/her password. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-zJKxxtro9GQ/TW-OS_FVmJI/AAAAAAAAALM/CtK-Gc_WIWs/s1600/ChangePassword.png" /&gt;&lt;br /&gt;&lt;br /&gt;A confirmation e-mail is sent to the user after the password has been changed.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-JuCipslvq5E/TW-OUdtr5fI/AAAAAAAAALg/YqvHLR6MJcs/s1600/PasswordChangedEmail.png" /&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Login.aspx&lt;/h1&gt;A Web page that allows the user to sign in using his/her username or e-mail address and password.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-6AYQtp22cwE/TW-OV96KzqI/AAAAAAAAAL0/TYMdEHZvsGk/s1600/UserSignIn.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Logout.aspx&lt;/h1&gt;A Web page that signs the user out.&lt;br /&gt;
&lt;h1&gt;/Account/Register.aspx&lt;/h1&gt;A Web page that lets a user create a new account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-KlUoh0t88-4/TW-OTStjw2I/AAAAAAAAALU/me37mCKWqFc/s1600/CreateAccount.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PYPW_RlRfQE/TW-OTlWs5OI/AAAAAAAAALY/p5-EJ_LVjds/s1600/CreateAccountSuccess.png" /&gt;&lt;br /&gt;&lt;br /&gt;After the user has registered an e-mail is sent with a link to &lt;i&gt;/Account/ActivateAccount.aspx&lt;/i&gt; to activate the user account and to validate the e-mail address of the user.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-ZlxpBhh7A6M/TW-YUMiidpI/AAAAAAAAAMM/kv8VyzOdLNo/s1600/ActivateAccountEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/ResetPassword.aspx&lt;/h1&gt;A Web page that lets the user reset his/her password if they have forgotten it. The user must answer the question he/she entered when he/she created the account. &lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-T8jwXpGh7kw/TW-PTDeMQUI/AAAAAAAAAL4/EhZvKAI-H4k/s1600/ResetPassword1.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-VWgkDMoo0Ks/TW-PThwiP2I/AAAAAAAAAL8/2RhZpRh9lAE/s1600/ResetPassword2.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-74CxmHDYWGY/TW-PT_5i0yI/AAAAAAAAAMA/Po1cm3TX0fw/s1600/ResetPassword3.png" /&gt;&lt;br /&gt;&lt;br /&gt;The new automatically generated password is sent to the users e-mail address.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-W8WDxax8usY/TW-PULhheLI/AAAAAAAAAME/QNYUJgBFBus/s1600/ResetPasswordEmail.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/UnlockAccount.aspx&lt;/h1&gt;A Web page that allows the user to unlock his/her user account in the case it has been locked out. After unlocking a confirmation is sent to the users e-mail address.&lt;br /&gt;
&lt;h1&gt;/Account/User.aspx&lt;/h1&gt;A Web page that shows the user profile. If the profile page belongs to the user that is viewing it the user can upload a picture and enter his/her gender. Here you can add/remove you own fields, the default fields are just there as an example.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-5f7svJgrNGM/TW-OU8jGUDI/AAAAAAAAALk/9qYo6YNx6WA/s1600/Profile.png" /&gt;&lt;br /&gt;
&lt;h2&gt;Querystring parameters&lt;/h2&gt;By default our own user profile page is displayed, if you want to see another users profile page then you can add the user name to the &amp;quot;name&amp;quot; querystring parameter, like this:&lt;br /&gt;&lt;br /&gt;http://example.com/Account/User.aspx?name=Admin&lt;br /&gt;&lt;br /&gt;The example above would show Admin&amp;#39;s user profile page.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/-rmja5gJTjv8/TW-OUPCUtoI/AAAAAAAAALc/IYWrLa8LRhE/s1600/OtherUsersProfile.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Account/Web.config&lt;/h1&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h1&gt;/Admin/InitApp.aspx&lt;/h1&gt;A Web page that initializes the AzureProviders application. You need to visit this page once to create:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;There is no harm in calling this page more than once. In earlier versions of AzureProviders this page was removed and the code moved to &lt;i&gt;Global.asax&lt;/i&gt; or the Azure Role &lt;i&gt;OnStart()&lt;/i&gt; method, but this attempt ultimately failed because of the context of the processes than ran them, and so the &lt;i&gt;/Admin/InitApp.asp&lt;/i&gt; web page was re-implemented again.&lt;br /&gt;
&lt;h1&gt;/Admin/Roles.aspx&lt;/h1&gt;A Web page that lists all the ASP.NET Role Provider roles.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh3.googleusercontent.com/-LmdzOr3cQNw/TW-OVG1PllI/AAAAAAAAALo/rltnxNecKs0/s1600/Roles.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Sessions.aspx&lt;/h1&gt;A Web page that lists all the active ASP.NET Session Provider sessions.&lt;br /&gt;
&lt;h1&gt;/Admin/Statistics.aspx&lt;/h1&gt;A Web page that shows the total number of registered users and the number of online users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-IS5uPtRWNRg/TW-OVcMo2pI/AAAAAAAAALs/HHBR9oouoUU/s1600/Stats.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Users.aspx&lt;/h1&gt;A Web page that lists all the ASP.NET Membership Provider users.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-PiiIg8zqb1A/TW-X77f7i7I/AAAAAAAAAMI/gmIiXR0zspw/s1600/Users.png" /&gt;&lt;br /&gt;
&lt;h1&gt;/Admin/Web.config&lt;/h1&gt;Contain rules of which sub-pages are visible to which user roles.&lt;br /&gt;
&lt;h1&gt;Email.resx&lt;/h1&gt;E-mail message resources like e-mail header and footer.&lt;br /&gt;
&lt;h1&gt;Profile.resx&lt;/h1&gt;Resources used by the ASP.NET Profile Provider.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureMembershipProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Membership Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureProfileProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Profile Provider that stores all its data in the Azure Table and Blob Storage.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureRoleProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Role Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;
&lt;h1&gt;/Bll/AzureSessionStateProvider.cs&lt;/h1&gt;Business logic for a custom ASP.NET Session-State Provider that stores all its data in the Azure Table Storage.&lt;br /&gt;
&lt;h1&gt;/Bll/GraphicUtilities.cs&lt;/h1&gt;Business logic that lets you create thumbnails and resize images.&lt;br /&gt;
&lt;h1&gt;/Bll/InitApplication.cs&lt;/h1&gt;Business logic that creates:
&lt;ul&gt;&lt;li&gt;Azure tables&lt;/li&gt;
&lt;li&gt;Azure queue&lt;/li&gt;
&lt;li&gt;Azure blob storage&lt;/li&gt;
&lt;li&gt;Admins role&lt;/li&gt;
&lt;li&gt;Admin user &amp;amp; profile&lt;/li&gt;&lt;/ul&gt;

&lt;h1&gt;/Ccc/EncryptionUtilities.cs&lt;/h1&gt;Business logic that makes a MD5 hash from a string.&lt;br /&gt;
&lt;h1&gt;/Images/&lt;/h1&gt;Image file folder.&lt;br /&gt;
&lt;h1&gt;/Scripts/&lt;/h1&gt;JavaScript file folder.&lt;br /&gt;
&lt;h1&gt;/Styles/&lt;/h1&gt;CSS file folder.&lt;br /&gt;
&lt;h1&gt;~/About.aspx&lt;/h1&gt;Some information about the AzureProviders solution.&lt;br /&gt;
&lt;h1&gt;Default.aspx&lt;/h1&gt;The start page. Demo&amp;#39;s the ASP.NET Session-State Provider by showing when the user session was started.&lt;br /&gt;
&lt;h1&gt;Global.asax&lt;/h1&gt;Initializes the Azure Cloud Storage Account when the Web application starts.&lt;br /&gt;
&lt;h1&gt;Site.master&lt;/h1&gt;Master page.&lt;br /&gt;
&lt;h1&gt;Web.config&lt;/h1&gt;&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;appSettings&amp;gt;&lt;/h2&gt;Key/value&amp;#39;s:
&lt;ul&gt;&lt;li&gt;StaticKey; A static key is used instead of machiekey to encrypt passwords since machinekey changes when in development&lt;/li&gt;
&lt;li&gt;fromEmail; (default=&amp;quot;do-not-reply@example.com&amp;quot;) This is the e-mail address that will be the sender on all the e-mails sent by this application&lt;/li&gt;
&lt;li&gt;AdminName; (default=&amp;quot;Admin&amp;quot;) By default a administrator user is made and this is its sign in name&lt;/li&gt;
&lt;li&gt;AdminEmail; (default=&amp;quot;admin@example.com&amp;quot;) By default a administrator user is made and this is its e-mail&lt;/li&gt;
&lt;li&gt;AdminPassword; (default=&amp;quot;Password&amp;quot;) By default a administrator user is made and this is its password&lt;/li&gt;
&lt;li&gt;AdminQuestion; (default=&amp;quot;Color of my first car?&amp;quot;) By default a administrator user is made and this is its password retrieval question&lt;/li&gt;
&lt;li&gt;AdminAnswer; (default=&amp;quot;Kiwi&amp;quot;) By default a administrator user is made and this is its password retrieval answer&lt;/li&gt;
&lt;li&gt;AdminRoleName; (default=&amp;quot;Admins&amp;quot;) By default a role is created to hold administrators and this is its name. Admin is added to this by default&lt;/li&gt;
&lt;li&gt;ApplicationName; (default=&amp;quot;MyApp1&amp;quot;) The name of your application, should match the one in the MultiThreadedWorkerRole &lt;i&gt;app.config&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;QueueDequeueRetrySleepSeconds; (default=3600) Number of seconds to wait before retrying if a message was dequeued in the Azure Queue&lt;/li&gt;
&lt;li&gt;UseNaglingWithTable; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;
&lt;li&gt;UseNaglingWithQueue; (default=&amp;quot;false&amp;quot;) PUT HTTP requests smaller than 1460 bytes are ineffecient with nagling turned on, see &lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;authentication&amp;gt;&amp;lt;forms&amp;gt;&lt;/h2&gt;Sets the ASP.NET login page to &lt;i&gt;/Account/Login.aspx&lt;/i&gt;&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;membership&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Membership Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;profile&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Profile Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;roleManager&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Role Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.web&amp;gt;&amp;lt;sessionState&amp;gt;&lt;/h2&gt;Settings for the custom ASP.NET Session-State Provider.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;connectionManagement&amp;gt;&lt;/h2&gt;By default ASP.NET only allows 2 concurrent client requests, this is really inefficient as your Azure server instances has capabilities of processing many more simultaneous asynchronous requests. Because of this AzureProviders accepts 48 concurrent client requests by default, but you should really try and find the setting that works best for your solution. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;br /&gt;
&lt;h2&gt;&amp;lt;configuration&amp;gt;&amp;lt;system.net&amp;gt;&amp;lt;settings&amp;gt;&lt;/h2&gt;By default ASP.NET uses the HTTP Expect 100-Continue pattern, which can be a performance issue if your HTTP operations are small, because of this AzureProviders has turned HTTP Expect 100-Continue off. See &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83" class="externalLink"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/d84ba34b-b0e0-4961-a167-bbe7618beb83&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for more information on the subject.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>ihenriksen</author><pubDate>Sun, 02 Oct 2011 08:23:15 GMT</pubDate><guid isPermaLink="false">Updated Wiki: WebPages project 20111002082315A</guid></item></channel></rss>