17.1. Windows Authentication17.1.1. Preventing or Limiting Anonymous Access17.2. Forms Authentication17.2.1. Setting Up Forms Authentication17.2.1.1. Handling Login Attempts17.2.2. Using Cookieless Forms Authentication17.3. Membership, Roles, and Profiles17.3.1. Setting Up a Membership Provider17.3.1.1. Setting Up SqlMembershipProvider17.3.1.1.1. Using a SQL Server Express User Instance Database17.3.1.1.2. Preparing Your Own Database for Membership, Roles, and Profiles17.3.1.2. Managing Members Using the Web Administration Tool17.3.1.3. Managing Members Using IIS 7.x's .NET Users Configuration Tool17.3.2. Using a Membership Provider with Forms Authentication17.3.3. Creating a Custom Membership Provider17.3.4. Setting Up and Using Roles17.3.4.1. Using the Built-In SqlRoleProvider17.3.4.2. Securing Controllers and Actions by Role17.3.4.3. Creating a Custom Roles Provider17.3.5. Setting Up and Using Profiles17.3.5.1. Using the Built-In SqlProfileProvider17.3.5.2. Configuring, Reading, and Writing Profile Data17.3.5.3. Creating a Custom Profile Provider17.4. URL-Based Authorization17.5. Configuration17.5.1. Configuring Connection Strings17.5.2. Configuring Arbitrary Key/Value Pairs17.5.3. Defining Configuration Sections to Configure Arbitrary Data Structures17.6. Data Caching17.6.1. Reading and Writing Cache Data17.6.2. Using Advanced Cache Features17.7. Site Maps17.7.1. Setting Up and Using Site Maps17.7.2. Creating a Custom Navigation Control with the Site Maps API17.7.3. Generating Site Map URLs from Routing Data17.7.3.1. Using Security Trimming17.8. Internationalization17.8.1. Setting Up Localization17.8.2. Tips for Working with Resource Files17.8.3. Using Placeholders in Resource Strings17.8.4. Internationalizing Validation17.8.4.1. Globalizing Validation Rules17.8.4.1.1. Using Ajax.GlobalizationScript()17.8.5. Localizing Data Annotations Validation Messages17.8.5.1. Localizing the Client-Side Number Validation Message17.9. Performance17.9.1. HTTP Compression17.9.2. Tracing and Monitoring17.9.3. Monitoring Page Generation Times17.9.4. Monitoring LINQ to SQL Database Queries17.10. Summary