Windows 2012 Hosting - MVC 6 and SQL 2014 BLOG

Tutorial and Articles about Windows Hosting, SQL Hosting, MVC Hosting, and Silverlight Hosting

ASP.NET 4 Hosting - ASPHostPortal :: How to Resolve Error Message "Server Application Unavailable"

clock January 6, 2011 06:22 by author Jervis

This is the error message:

Server Application Unavailable


The web application you are attempting to access on this web server is currently unavailable.  Please hit the "Refresh" button in your web browser to retry your request.

Administrator Note: An error message detailing the cause of this specific request failure can be found in the application event log of the web server. Please review this log entry to discover what caused this error to occur

How to Fix it?

Solution 1:
Open the command promt and direct to the folder C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
and run the command to install ASP.NET in your IIS
aspnet_regiis.exe –i


Solution 2:
To work around this problem, verify that the ASPNET account has the correct user rights as follows:
a) %windir%\Microsoft.NET\Framework\Version\Temporary ASP.NET Files: Full Control
%windir%\Temp: Full Control
b) Application folder: Read
c) %installroot% hierarchy (for example, %windir%\Microsoft.Net\Framework\Version): Read
d) %windir%\Assembly: Read
e) Web site root (for example, %root%\Inetpub\Wwwroot) or the path that the default Web site points to: Read
f) %windir%\System32: Read(Typically, the ASPNET account has already been granted user rights as a member of the Users group.

Reasons why you must trust ASPHostPortal.com

Every provider will tell you how they treat their support, uptime, expertise, guarantees, etc., are. Take a close look. What they’re really offering you is nothing close to what ASPHostPortal does. You will be treated with respect and provided the courtesy and service you would expect from a world-class web hosting business.

You’ll have highly trained, skilled professional technical support people ready, willing, and wanting to help you 24 hours a day. Your web hosting account servers are monitored from three monitoring points, with two alert points, every minute, 24 hours a day, 7 days a week, 365 days a year. The followings are the list of other added- benefits you can find when hosting with us:

- DELL Hardware
Dell hardware is engineered to keep critical enterprise applications running around the clock with clustered solutions fully tested and certified by Dell and other leading operating system and application providers.
- Recovery Systems
Recovery becomes easy and seamless with our fully managed backup services. We monitor your server to ensure your data is properly backed up and recoverable so when the time comes, you can easily repair or recover your data.
- Control Panel
We provide one of the most comprehensive customer control panels available. Providing maximum control and ease of use, our Control Panel serves as the central management point for your ASPHostPortal account. You’ll use a flexible, powerful hosting control panel that will give you direct control over your web hosting account. Our control panel and systems configuration is fully automated and this means your settings are configured automatically and instantly.
- Excellent Expertise in Technology
The reason we can provide you with a great amount of power, flexibility, and simplicity at such a discounted price is due to incredible efficiencies within our business. We have not just been providing hosting for many clients for years, we have also been researching, developing, and innovating every aspect of our operations, systems, procedures, strategy, management, and teams. Our operations are based on a continual improvement program where we review thousands of systems, operational and management metrics in real-time, to fine-tune every aspect of our operation and activities. We continually train and retrain all people in our teams. We provide all people in our teams with the time, space, and inspiration to research, understand, and explore the Internet in search of greater knowledge. We do this while providing you with the best hosting services for the lowest possible price.
- Data Center
ASPHostPortal modular Tier-3 data center was specifically designed to be a world-class web hosting facility totally dedicated to uncompromised performance and security
- Monitoring Services
From the moment your server is connected to our network it is monitored for connectivity, disk, memory and CPU utilization – as well as hardware failures. Our engineers are alerted to potential issues before they become critical.
- Network
ASPHostPortal has architected its network like no other hosting company. Every facet of our network infrastructure scales to gigabit speeds with no single point of failure.
- Security
Network security and the security of your server are ASPHostPortal’s top priorities. Our security team is constantly monitoring the entire network for unusual or suspicious behavior so that when it is detected we can address the issue before our network or your server is affected.
- Support Services
Engineers staff our data center 24 hours a day, 7 days a week, 365 days a year to manage the network infrastructure and oversee top-of-the-line servers that host our clients’ critical sites and services.



ASP.NET 4.0 Hosting :: Auto Start Web Applications in ASP.NET 4.0

clock November 12, 2010 04:13 by author Jervis

Some web applications require large amount of initialization processing time before serving the first request. In some cases web applications may also need to load the large amount of data in first request.

In earlier versions we used write the custom code in Application_Load method in Global.asax file to handle above scenarios.

Auto Start Feature which addresses this scenario is available when ASP.NET 4.0 runs on IIS 7.5 on windows server 2008 R2.

The feature enables you to

- Starting up an application pool
- Initializing an ASP.NET application


Configuring the auto-start feature for application pool in IIS 7.5

You need to set the following configuration in applicationHost.config file.

<applicationPools>
    <add name="MyApplicationPool" startMode="AlwaysRunning"  />
</applicationPools>

If your application pool containing multiple applications, you can auto-start individual applications by setting the following configuration in applicationHost.config file.

<sites>
  <site name="MySite" id="1">
    <application path="/"
         preloadEnabled="true"
         preloadProvider="PrewarmMyCache" >
        <!--  Additional content -->
    </application>
  </site>
</sites>

When an individual application pool is recycled IIS 7.5 uses the information in applicationHost.config file to determine which applications need to be automatically started.

When you set auto-start feature for application then IIS 7.5 sends a request to ASP.NET 4.0 to start the application. In this state application temporarily does not accept HTTP requests. After the initialization process, the ASP.NET application is ready to process the requests.

Advantage Using IIS 7.5 and ASP.NET 4.0 we now have a well-defined approach for performing expensive application initialization before processing first HTML request.

Example: with this auto-start feature we can initialize an application and then signal the load balancing server that the application was initialized and ready to accept HTTP traffic.

Reasons why you must trust ASPHostPortal.com

Every provider will tell you how they treat their support, uptime, expertise, guarantees, etc., are. Take a close look. What they’re really offering you is nothing close to what ASPHostPortal does. You will be treated with respect and provided the courtesy and service you would expect from a world-class web hosting business.

You’ll have highly trained, skilled professional technical support people ready, willing, and wanting to help you 24 hours a day. Your web hosting account servers are monitored from three monitoring points, with two alert points, every minute, 24 hours a day, 7 days a week, 365 days a year. The followings are the list of other added- benefits you can find when hosting with us:

- DELL Hardware
Dell hardware is engineered to keep critical enterprise applications running around the clock with clustered solutions fully tested and certified by Dell and other leading operating system and application providers.
- Recovery Systems
Recovery becomes easy and seamless with our fully managed backup services. We monitor your server to ensure your data is properly backed up and recoverable so when the time comes, you can easily repair or recover your data.
- Control Panel
We provide one of the most comprehensive customer control panels available. Providing maximum control and ease of use, our Control Panel serves as the central management point for your ASPHostPortal account. You’ll use a flexible, powerful hosting control panel that will give you direct control over your web hosting account. Our control panel and systems configuration is fully automated and this means your settings are configured automatically and instantly.
- Excellent Expertise in Technology
The reason we can provide you with a great amount of power, flexibility, and simplicity at such a discounted price is due to incredible efficiencies within our business. We have not just been providing hosting for many clients for years, we have also been researching, developing, and innovating every aspect of our operations, systems, procedures, strategy, management, and teams. Our operations are based on a continual improvement program where we review thousands of systems, operational and management metrics in real-time, to fine-tune every aspect of our operation and activities. We continually train and retrain all people in our teams. We provide all people in our teams with the time, space, and inspiration to research, understand, and explore the Internet in search of greater knowledge. We do this while providing you with the best hosting services for the lowest possible price.
- Data Center
ASPHostPortal modular Tier-3 data center was specifically designed to be a world-class web hosting facility totally dedicated to uncompromised performance and security
- Monitoring Services
From the moment your server is connected to our network it is monitored for connectivity, disk, memory and CPU utilization – as well as hardware failures. Our engineers are alerted to potential issues before they become critical.
- Network
ASPHostPortal has architected its network like no other hosting company. Every facet of our network infrastructure scales to gigabit speeds with no single point of failure.
- Security
Network security and the security of your server are ASPHostPortal’s top priorities. Our security team is constantly monitoring the entire network for unusual or suspicious behavior so that when it is detected we can address the issue before our network or your server is affected.
- Support Services
Engineers staff our data center 24 hours a day, 7 days a week, 365 days a year to manage the network infrastructure and oversee top-of-the-line servers that host our clients’ critical sites and services.



ASP.NET 4.0 Hosting - ASPHostPortal :: Using Custom Configuration Section and Configuration Manager class in .NET

clock November 3, 2010 06:49 by author Jervis

At times instead of using appSettings section we would like to define our own custom section within configuration file.

Suppose we  want to create a custom config section in this following manner

<SimplConfigSection id=myID name=myName />

For implementing the above custom section we need to first define a class inheriting from ConfigurationSection class

Add reference to System.Configuration dll.

Create a new config section class in the following manner

// inherit the class ConfigurationSection

    class SimpleConfigSection : ConfigurationSection
    {
        public SimpleConfigSection()
        {
        } 

        // using ConfigurationProperty attribute to define the attribute
        [ConfigurationProperty("id",IsRequired = true)]
        public String ID
        {
            get
            { return (String)this["id"]; }
            set
            { this["id"] = value; }
        }
        // using ConfigurationProperty attribute to define the attribute
        [ConfigurationProperty("name", IsRequired = true)]
        public String Name
        {
            get
            { return (String)this["name"]; }
            set
            { this["name"] = value; }
        }
    }

Now to register your custom section do the following

<configSections>

<section name=SimplConfigSection            type=Namespace.SimpleConfigSection, Namespace />
</configSections>

And to use it within the application

SimpleConfigSection simpleConfig = (SimpleConfigSection)ConfigurationManager.GetSection(“SimplConfigSection”);
            string id = simpleConfig.ID;
            string name = simpleConfig.Name;
 

That’s it …

Reasons why you must trust ASPHostPortal.com

Every provider will tell you how they treat their support, uptime, expertise, guarantees, etc., are. Take a close look. What they’re really offering you is nothing close to what ASPHostPortal does. You will be treated with respect and provided the courtesy and service you would expect from a world-class web hosting business.

You’ll have highly trained, skilled professional technical support people ready, willing, and wanting to help you 24 hours a day. Your web hosting account servers are monitored from three monitoring points, with two alert points, every minute, 24 hours a day, 7 days a week, 365 days a year. The followings are the list of other added- benefits you can find when hosting with us:

- DELL Hardware
Dell hardware is engineered to keep critical enterprise applications running around the clock with clustered solutions fully tested and certified by Dell and other leading operating system and application providers.
- Recovery Systems
Recovery becomes easy and seamless with our fully managed backup services. We monitor your server to ensure your data is properly backed up and recoverable so when the time comes, you can easily repair or recover your data.
- Control Panel
We provide one of the most comprehensive customer control panels available. Providing maximum control and ease of use, our Control Panel serves as the central management point for your ASPHostPortal account. You’ll use a flexible, powerful hosting control panel that will give you direct control over your web hosting account. Our control panel and systems configuration is fully automated and this means your settings are configured automatically and instantly.
- Excellent Expertise in Technology
The reason we can provide you with a great amount of power, flexibility, and simplicity at such a discounted price is due to incredible efficiencies within our business. We have not just been providing hosting for many clients for years, we have also been researching, developing, and innovating every aspect of our operations, systems, procedures, strategy, management, and teams. Our operations are based on a continual improvement program where we review thousands of systems, operational and management metrics in real-time, to fine-tune every aspect of our operation and activities. We continually train and retrain all people in our teams. We provide all people in our teams with the time, space, and inspiration to research, understand, and explore the Internet in search of greater knowledge. We do this while providing you with the best hosting services for the lowest possible price.
- Data Center
ASPHostPortal modular Tier-3 data center was specifically designed to be a world-class web hosting facility totally dedicated to uncompromised performance and security
- Monitoring Services
From the moment your server is connected to our network it is monitored for connectivity, disk, memory and CPU utilization – as well as hardware failures. Our engineers are alerted to potential issues before they become critical.
- Network
ASPHostPortal has architected its network like no other hosting company. Every facet of our network infrastructure scales to gigabit speeds with no single point of failure.
- Security
Network security and the security of your server are ASPHostPortal’s top priorities. Our security team is constantly monitoring the entire network for unusual or suspicious behavior so that when it is detected we can address the issue before our network or your server is affected.
- Support Services
Engineers staff our data center 24 hours a day, 7 days a week, 365 days a year to manage the network infrastructure and oversee top-of-the-line servers that host our clients’ critical sites and services.



ASP.NET 4.0 Hosting - ASPHostPortal :: ASP.NET 4.0 URL Routing Tutorial

clock November 2, 2010 10:04 by author Jervis

It is a common mis-perception that URL Routing is  exclusive to MVC, with .NET 3.5 SP1 and above URL Routing can be also used with ASP.NET Web Forms. In ASP.NET 4.0 URL Routing is fully integrated and so straightforward and powerful to use it should be preferred over URL Rewriting whenever possible.

First you will need to register the Routes in a subroutine and then add them in the Application_Start() event:

void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"articles-category",  //Name of the Route (can be anyuthting)
"articles/{category}", // URL with parameters
"~/category.aspx"); //Page which will handles and process the request
}

void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}

In the above code, the Route named articles-category will handle incoming requests for URLs which match the articles/{category} route definition. This route definition uses “articles/” as a literal string in the URL and then takes the subsequent URL text for the category parameter. For example, the URL articles/routing will direct to the page category.aspx and pass “routing” as the value for the category parameter.

The parameters from the URL are passed to the aspx page in key-value dictionary pairs which can be accessed from Page.RouteData.Values. So in the above example the category value can be read into a variable using the below code

string category = Page.RouteData.Values["category"] as string;

This code would typically be placed in the Page_Load() event of the page.

In addition to accessing the parameters programatically, they can also be read by the SQLDataSource control using the <asp:routeparameter> control:

<asp:sqldatasource id="ds1" runat="server"
connectionstring="<%$ ConnectionStrings:Main %>"
selectcommand="select title, text from Articles where category=@cat">
<selectparameters>
<asp:routeparameter name="category" RouteKey="cat" />
</selectparameters>
</asp:sqldatasource>

Generate URLs Using ASP.NET Routing

A major difference between Routing and URL rewriting is that Routing also allows for the generation of outgoing URLs served on the site. In the above example if we wanted to show users a URL for the ado category of articles, then we could generate a URL by using the below code:

string url = Page.GetRouteUrl("articles-category",
  new { category = "ado" });

This code uses the articles-category Route to generate a url string, this could be used on the page or passed to the Response.Redirect method to redirect to another page. Whilst the last use is valid, if the user needs to be redirected to another page using Routing it is more efficient to use the Response.RedirectToRoute method:

Response.RedirectToRoute("articles-category",
  new { category = "ado" });

Reasons why you must trust ASPHostPortal.com

Every provider will tell you how they treat their support, uptime, expertise, guarantees, etc., are. Take a close look. What they’re really offering you is nothing close to what ASPHostPortal does. You will be treated with respect and provided the courtesy and service you would expect from a world-class web hosting business.

You’ll have highly trained, skilled professional technical support people ready, willing, and wanting to help you 24 hours a day. Your web hosting account servers are monitored from three monitoring points, with two alert points, every minute, 24 hours a day, 7 days a week, 365 days a year. The followings are the list of other added- benefits you can find when hosting with us:

- DELL Hardware
Dell hardware is engineered to keep critical enterprise applications running around the clock with clustered solutions fully tested and certified by Dell and other leading operating system and application providers.
- Recovery Systems
Recovery becomes easy and seamless with our fully managed backup services. We monitor your server to ensure your data is properly backed up and recoverable so when the time comes, you can easily repair or recover your data.
- Control Panel
We provide one of the most comprehensive customer control panels available. Providing maximum control and ease of use, our Control Panel serves as the central management point for your ASPHostPortal account. You’ll use a flexible, powerful hosting control panel that will give you direct control over your web hosting account. Our control panel and systems configuration is fully automated and this means your settings are configured automatically and instantly.
- Excellent Expertise in Technology
The reason we can provide you with a great amount of power, flexibility, and simplicity at such a discounted price is due to incredible efficiencies within our business. We have not just been providing hosting for many clients for years, we have also been researching, developing, and innovating every aspect of our operations, systems, procedures, strategy, management, and teams. Our operations are based on a continual improvement program where we review thousands of systems, operational and management metrics in real-time, to fine-tune every aspect of our operation and activities. We continually train and retrain all people in our teams. We provide all people in our teams with the time, space, and inspiration to research, understand, and explore the Internet in search of greater knowledge. We do this while providing you with the best hosting services for the lowest possible price.
- Data Center
ASPHostPortal modular Tier-3 data center was specifically designed to be a world-class web hosting facility totally dedicated to uncompromised performance and security
- Monitoring Services
From the moment your server is connected to our network it is monitored for connectivity, disk, memory and CPU utilization – as well as hardware failures. Our engineers are alerted to potential issues before they become critical.
- Network
ASPHostPortal has architected its network like no other hosting company. Every facet of our network infrastructure scales to gigabit speeds with no single point of failure.
- Security
Network security and the security of your server are ASPHostPortal’s top priorities. Our security team is constantly monitoring the entire network for unusual or suspicious behavior so that when it is detected we can address the issue before our network or your server is affected.
- Support Services
Engineers staff our data center 24 hours a day, 7 days a week, 365 days a year to manage the network infrastructure and oversee top-of-the-line servers that host our clients’ critical sites and services.



ASP.NET 4.0 Hosting - ASPHostPortal :: Dynamic Metadata using ASP.NET 4.0

clock October 28, 2010 08:16 by author Jervis

This post explains about Dynamically assigning Metadata to a page using code behind in ASP.NET 4.0. Metadata is so important as Search engine optimization considers Metadata keywords and description to index  the page. If you can dynamically assign the metadata to your page then search engine can easily analyze and puts the page in results list.

1. Create a ASP.NET web application in VS 2010 and add a grid view to the page

 

2. Configure the SqlDataSource to grid view with Address table as shown below

 

3. Run the application then you will see the following page

 

4. Right click the above and you will notice that there won’t be any meta tags in the page source.

 

This could be problematic for SEO search engine. One solution is you can go to the page and statically can give the meta data description and keywords. This won’t help for the website where data is dynamically updated and want to update their page meta tags according to their generated data.

5. Now We will display the list of sales persons from particular city and update the meta tags accordingly.

6. In code behind for the above page write the following code

string strCity = Page.RouteData.Values["State"] as string;
Page.MetaDescription = "A List of sales persons from " + strCity;
Page.MetaKeywords = "Lists, Sales person" + strCity;

The above code gets the city value from the routing URL and then appends the value dynamically to the page meta description and keywords.

Now run the application and you will see the following output in the page view source.



You can notice that meta tags are update based on the visited cities and this description updated dynamically whenever the city value changed in the URL.

Reasons why you must trust ASPHostPortal.com

Every provider will tell you how they treat their support, uptime, expertise, guarantees, etc., are. Take a close look. What they’re really offering you is nothing close to what ASPHostPortal does. You will be treated with respect and provided the courtesy and service you would expect from a world-class web hosting business.

You’ll have highly trained, skilled professional technical support people ready, willing, and wanting to help you 24 hours a day. Your web hosting account servers are monitored from three monitoring points, with two alert points, every minute, 24 hours a day, 7 days a week, 365 days a year. The followings are the list of other added- benefits you can find when hosting with us:

- DELL Hardware
Dell hardware is engineered to keep critical enterprise applications running around the clock with clustered solutions fully tested and certified by Dell and other leading operating system and application providers.
- Recovery Systems
Recovery becomes easy and seamless with our fully managed backup services. We monitor your server to ensure your data is properly backed up and recoverable so when the time comes, you can easily repair or recover your data.
- Control Panel
We provide one of the most comprehensive customer control panels available. Providing maximum control and ease of use, our Control Panel serves as the central management point for your ASPHostPortal account. You’ll use a flexible, powerful hosting control panel that will give you direct control over your web hosting account. Our control panel and systems configuration is fully automated and this means your settings are configured automatically and instantly.
- Excellent Expertise in Technology
The reason we can provide you with a great amount of power, flexibility, and simplicity at such a discounted price is due to incredible efficiencies within our business. We have not just been providing hosting for many clients for years, we have also been researching, developing, and innovating every aspect of our operations, systems, procedures, strategy, management, and teams. Our operations are based on a continual improvement program where we review thousands of systems, operational and management metrics in real-time, to fine-tune every aspect of our operation and activities. We continually train and retrain all people in our teams. We provide all people in our teams with the time, space, and inspiration to research, understand, and explore the Internet in search of greater knowledge. We do this while providing you with the best hosting services for the lowest possible price.
- Data Center
ASPHostPortal modular Tier-3 data center was specifically designed to be a world-class web hosting facility totally dedicated to uncompromised performance and security
- Monitoring Services
From the moment your server is connected to our network it is monitored for connectivity, disk, memory and CPU utilization – as well as hardware failures. Our engineers are alerted to potential issues before they become critical.
- Network
ASPHostPortal has architected its network like no other hosting company. Every facet of our network infrastructure scales to gigabit speeds with no single point of failure.
- Security
Network security and the security of your server are ASPHostPortal’s top priorities. Our security team is constantly monitoring the entire network for unusual or suspicious behavior so that when it is detected we can address the issue before our network or your server is affected.
- Support Services
Engineers staff our data center 24 hours a day, 7 days a week, 365 days a year to manage the network infrastructure and oversee top-of-the-line servers that host our clients’ critical sites and services.



ASP.NET 4.0 Hosting - ASPHostPortal :: New Features ASP.NET 4.0

clock October 21, 2010 09:19 by author Jervis

ViewStateMode – ViewState for Individual Controls

ASP.Net 4.0 allows view state in a page to be more controllable from page to its child controls level. That is, view state of a control can be enabled or disabled irrespective of its parent control’s view state. Even if view state of a page is disabled, controls of the page can have their own view state individually enabled or disabled or even inherited from the page’s view state mode property. This property if utilized properly can certainly boost performance of a page.

For example, we can individually enable or disable user control’s view state in a page.



By default, ViewStateMode is enabled for a page object, while controls have inherit mode.

Page.MetaKeywords and Page.MetaDescription – SEO Optimization Feature

ASP.Net 4.0 has come up with these two properties that will help developers add meta tags for keywords and description in the aspx pages in easier fashion. Web Search Engines really need these two meta tags for search indexing of any pages. These two properties can be used in a page in various ways. Inside <head> tag or in the code behind or even at <%@Page%> directive level.

However, setting meta keywords or description in code behind will be more useful when we have to add keywords and descriptions dynamically from source like database.

MetaKeyWords is used to store few useful keywords that will briefly highlight important information of a page by tags. From SEO perspective, meta keywords should contain keywords separated by spaces.

MetaDescription is used to add page description in short that will help Search Engines to quickly describe about the page links in search pages.

Prior to ASP.Net 4.0, we have to add meta tags using HtmlMeta control (public class HtmlMeta : HtmlControl) adding into page header as:

protected void Page_Load(object sender, EventArgs e)
{
//
HtmlMeta metakey = new HtmlMeta();
metakey.Name = “keywords”;
metakey.Content = “ASP.Net 2.0 3.5″;
HtmlMeta metadesc = new HtmlMeta();
metadesc.Name = “description”;
metadesc.Content = “ASP.Net 2.0 3.5 Page Description…”;
//Add to page header
Page.Header.Controls.Add(metakey);
Page.Header.Controls.Add(metadesc);
}

In ASP.Net 4.0, we can add in many ways.

protected void Page_Load(object sender, EventArgs e)
{
//Adding Page meta tags information
this.Page.MetaKeywords = “ASP.Net 4.0 SEO Meta Tag”;
this.Page.MetaDescription = “Serializing and Deserializing Thoughts..”;
}

Or,

<head runat="”server”">
<title>Feature: ViewStateMode</title>
<meta name=”keywords” content =”ASP.Net 4.0 ViewStateMode”/>
<meta name=”description” content=”ViewStateMode feature in ASP.Net 4.0″ />
</head>

Or inside Page directive,



Response.RedirectPermanent – Search Engine Friendly Webpage Redirection

In classic ASP or ASP.Net earlier than 4.0, we used to redirect to new pages or links by setting Response.StatusCode to 301 before calling Response.AddHeader method. Now ASP.Net 4.0 has provided Response.RedirectPermanent method to redirect to new pages or links with StatusCode of 301 implicitly set. Search Engines use this 301 code to understand permanent redirection from old pages links.

For example, Classic ASP method:

<%@ Language="VBScript" %>
<%
Response.Status=”301 Moved Permanently”
Response.AddHeader “Location”,http://www.new-page-url.com/
%>

ASP.Net method prior to 4.0:

<script runat="”server”">
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”;
Response.AddHeader(“Location”,”http://www.new-page-url.com”);
}
</script>

ASP.Net 4.0 method:

Response.RedirectPermanent(“http://www.new-page-url.com “);

Web.Config Refactoring – Custom HttpHandlers and HttpModules

Web.config now looks cleaner as most of the settings are controlled from machine.config file as ASP.Net 4.0 is all set to benefit from IIS 7 and IIS 7.5 features. When IIS is set to use .Net 4.0 and Integrated Pipeline mode, <compilation> element holds .Net version attribute. And the traditional <httpHandlers> and <httpModules> section is now shifted out of <system.web> and added inside new section <system.webserver>. All the custom handlers are added inside <handlers>, and all the modules inside <modules> section.

<system.webServer>
<!– Add the module for Integrated mode applications –>
<modules runAllManagedModulesForAllRequests=”true”>
<add name=”MyModule” type=”WebAppModule.MyCustomModule, WebAppModule” />
</modules>
<!– Add the handler for Integrated mode applications –>
<handlers>
<add name=”MyHandler” path=”svrtime.tm” verb=”GET”
    type=”WebAppModule.MyCustomHandler, WebAppModule” preCondition=”integratedMode” />
</handlers>
</system.webServer>

Also,

<system.web>
<compilation debug=”true” targetFramework=”4.0″ />

Interesting point is, when we add custom handlers and modules this way, we do not have to manually configure handlers and modules in IIS again. IIS will automatically refresh itself.



ASP.NET 4.0 Hosting - ASPHostPortal :: Paging for DataList Control ASP.net

clock October 18, 2010 07:33 by author Jervis

We know that Gridview and DataList are the Data Controls in ASP.net and they both are used for loading bulk of data however DataList lacks some but the basic functionality such as built-in Paging like GridView Control offers. But that this doesn’t mean than paging is not possible for DataList as you can your custom functionality of paging.

This is quite simple and it can be carried out by adding two Buttons that is the next and previous buttons for navigation.

Below written is the source code that shows how you will do the navigation on DataList Data:

Private Sub BindDataList()

   Dim page As New PagedDataSource

  page.AllowPaging = True
  page.DataSource = ds ‘Here you will write your Dataset
  page.PageSize = 20
  page.CurrentPageIndex = CurrentPage
  dlVideos.DataSource = page     'dlVideos is my Datalist control ID
  dlVideos.DataKeyField = "ID"
  dlVideos.DataBind()

 'according to last and first page...
  imgBtnNext.Visible = Not page.IsLastPage
  imgBtnPrev.Visible = Not page.IsFirstPage
End Sub

Public Property CurrentPage() As Integer

        Get
            ' look for current page in ViewState

            Dim o As Object = Me.ViewState("_CurrentPage")

            If o Is Nothing Then

                Return 0
            Else
                ' default to showing the first page

                Return CInt(o)

            End If
        End Get

        Set(ByVal value As Integer)

            Me.ViewState("_CurrentPage") = value
        End Set
    End Property

'Previous Button
Protected Sub imgBtnPrev_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imgBtnPrev.Click
        CurrentPage -= 1
        BindDataList()
End Sub

'Next Button
Protected Sub imgBtnNext_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imgBtnNext.Click
        CurrentPage += 1
        BindDataList()
End Sub

Reasons why you must trust ASPHostPortal.com

Every provider will tell you how they treat their support, uptime, expertise, guarantees, etc., are. Take a close look. What they’re really offering you is nothing close to what ASPHostPortal does. You will be treated with respect and provided the courtesy and service you would expect from a world-class web hosting business.

You’ll have highly trained, skilled professional technical support people ready, willing, and wanting to help you 24 hours a day. Your web hosting account servers are monitored from three monitoring points, with two alert points, every minute, 24 hours a day, 7 days a week, 365 days a year. The followings are the list of other added- benefits you can find when hosting with us:

- DELL Hardware
Dell hardware is engineered to keep critical enterprise applications running around the clock with clustered solutions fully tested and certified by Dell and other leading operating system and application providers.
- Recovery Systems
Recovery becomes easy and seamless with our fully managed backup services. We monitor your server to ensure your data is properly backed up and recoverable so when the time comes, you can easily repair or recover your data.
- Control Panel
We provide one of the most comprehensive customer control panels available. Providing maximum control and ease of use, our Control Panel serves as the central management point for your ASPHostPortal account. You’ll use a flexible, powerful hosting control panel that will give you direct control over your web hosting account. Our control panel and systems configuration is fully automated and this means your settings are configured automatically and instantly.
- Excellent Expertise in Technology
The reason we can provide you with a great amount of power, flexibility, and simplicity at such a discounted price is due to incredible efficiencies within our business. We have not just been providing hosting for many clients for years, we have also been researching, developing, and innovating every aspect of our operations, systems, procedures, strategy, management, and teams. Our operations are based on a continual improvement program where we review thousands of systems, operational and management metrics in real-time, to fine-tune every aspect of our operation and activities. We continually train and retrain all people in our teams. We provide all people in our teams with the time, space, and inspiration to research, understand, and explore the Internet in search of greater knowledge. We do this while providing you with the best hosting services for the lowest possible price.
- Data Center
ASPHostPortal modular Tier-3 data center was specifically designed to be a world-class web hosting facility totally dedicated to uncompromised performance and security
- Monitoring Services
From the moment your server is connected to our network it is monitored for connectivity, disk, memory and CPU utilization – as well as hardware failures. Our engineers are alerted to potential issues before they become critical.
- Network
ASPHostPortal has architected its network like no other hosting company. Every facet of our network infrastructure scales to gigabit speeds with no single point of failure.
- Security
Network security and the security of your server are ASPHostPortal’s top priorities. Our security team is constantly monitoring the entire network for unusual or suspicious behavior so that when it is detected we can address the issue before our network or your server is affected.
- Support Services
Engineers staff our data center 24 hours a day, 7 days a week, 365 days a year to manage the network infrastructure and oversee top-of-the-line servers that host our clients’ critical sites and services.



ASP.NET 4.0 Hosting - ASPHostPortal :: Data Web Controls Enhancements in ASP.NET 4

clock October 14, 2010 07:20 by author Jervis

Disabling The Outer Table In Templated Controls

In ASP.NET 3.5, a number of Web controls that use (or can use) templates automatically wrap the rendered templated content within a <table> element. One such control that displays this behavior is the FormView control. To see how the FormView wraps the output in a <table>, let's take a moment to construct a FormView to display the name and description of a particular category from the Northwind database's Categories table. This FormView would need to include an ItemTemplate that emitted the CategoryName and Description fields. The following declarative markup creates such a FormView:

<asp:FormView runat="server" ...>
   <ItemTemplate>
      <b><%# Eval("CategoryName") %></b><br />
      <%# Eval("Description") %>'
   </ItemTemplate>
</asp:FormView>

Furthermore, imagine that this FormView was bound to a data source control that returned information about the Beverages category. When viewed through a browser, the FormView control would generate the following HTML:

<table cellspacing="0" id="ContentPlaceHolder1" style="border-collapse:collapse;">
   <tr>
      <td colspan="2">

         <b>Beverages</b><br />
         Soft drinks, coffees, teas, beers, and ales'
      </td>
   </tr>
</table>

The highlighted markup above shows the <table> element automatically added to the markup defined in the template. In short, the FormView control wraps its templated content within a one row, one column table, whether we like it or not.

The FormView renders this outer <table> to express style information. The FormView has a property named RowStyle, which contains a variety of substyles (BackColor, Font, BorderColor, and so on). For example, if the RowStyle's BackColor and Font-Size properties are set to Red and Larger, respectively, the FormView will render the following markup:

<table cellspacing="0" id="ContentPlaceHolder1" style="border-collapse:collapse;">
   <tr style="background-color:red;font-size:Large;">
      <td colspan="2">
         <b>Beverages</b><br />
         Soft drinks, coffees, teas, beers, and ales'
      </td>
   </tr>
</table>

Note how the <table> (specifically the <tr> element) specifies the style as defined by the FormView's RowStyle property. Therefore, this outer <table> element is useful when using the RowStyle property, but is extra cruft if the RowStyle property is not being used or if the style information is specified directly in the template's markup (using CSS classes, ideally).

ASP.NET 4.0 adds a new Boolean property to the FormView and a host of other Web controls named RenderOuterTable. This property, when set to True (the default), renders the outer <table> element as was done in ASP.NET 3.5 and earlier versions. If this property is set to False, however, then the outer <table> is omitted.

Taking our earlier FormView example, let's see what would happen if we set RenderOuterTable to False.

<asp:FormView runat="server" ... RenderOuterTable="false">
   <ItemTemplate>
      <b><%# Eval("CategoryName") %></b><br />
      <%# Eval("Description") %>'
   </ItemTemplate>
</asp:FormView>

With that minor change, the rendered markup for the FormView no longer includes the outer table. Instead, the FormView renders just the contents of its template(s), as the following snippet of HTML shows:

<b>Beverages</b><br />
Soft drinks, coffees, teas, beers, and ales'

When RenderOuterTable is set to False, any styles that are expressed through that outer table are no longer rendered. In short, any style settings to the RowStyle property will be ignored when the above FormView is rendered.

In addition to the FormView, the RenderOuterTable property has been added to the following Web controls in ASP.NET 4.0:

- Login
- PasswordRecovery
- ChangePassword
- Wizard
- CreateUserWizard

The download available at the end of this article includes a demo that illustrates the effects of the RenderOuterTable property on both the FormView and Login controls.

ListView Control Enhancements

The ListView control displays a set of data records using templates. Like the GridView, the ListView supports paging, sorting, editing, and deleting data. It can also be used to insert data. Developers using the ListView control in ASP.NET version 3.5 had to provide at least two required templates:

- ItemTemplate - specifies the markup rendered for each item bound to the ListView
- LayoutTemplate - specifies the ListView's encasing markup and contains a Web control that indicates where the ItemTemplate's markup should be placed

In most scenarios, the LayoutTemplate would contain nothing but a Web control to specify where the ItemTemplate's markup should appear, resulting in a ListView with markup like the following:

<asp:ListView runat="server" ...>
   <LayoutTemplate>
      <asp:PlaceHolder runat="server" ID="itemPlaceHolder" />
   </LayoutTemplate>

   <ItemTemplate>
      ...
   </ItemTemplate>
</asp:ListView>

The LayoutTemplate in the above example serves no purpose other than to say, "Here is where the ItemTemplate markup should go." Regardless, with ASP.NET 3.5 you still had to define this LayoutTemplate explicitly in the ListView's markup.

The good news is that with ASP.NET version 4.0 you can omit the LayoutTemplate - the ItemTemplate is now the only required template in the ListView. The following snippet of declarative markup shows this new abbreviated syntax:

<asp:ListView runat="server" ...>
   <ItemTemplate>
      ...
   </ItemTemplate>
</asp:ListView>


New RepeatLayout Options for the CheckBoxList and RadioButtonList Controls

The CheckBoxList and RadioButtonList controls display a set of check boxes or radio buttons based on some data and are useful for building a set of check boxes or radio buttons based on a database query. Both of these controls have a RepeatLayout property that dictates how the series of check boxes or radio buttons are laid out. In ASP.NET 3.5 there were two possible settings for this property:

- Table (the default) - lays out the items using a <table> element. By default, each check box or radio button is laid out in its own table row. Use the RepeatColumns property to have a fixed number of check boxes or radio buttons displayed per row.
- Flow - lays out each check box or radio button in a <span> element with a line break (<br />) after each element, by default. The RepeatColumns property, if set, indicates that a line break should only be rendered after a certain number of check boxes or radio buttons.

ASP.NET 4.0 adds two additional settings to the RepeatLayout property:

- OrderedList - lays out the items using an <ol> element. You cannot use the RepeatColumns property with this setting. Doing so will result in an exception being thrown when the page is visited.
- UnorderedList - lays out the items using an <ul> element. You cannot use the RepeatColumns property with this setting. Doing so will result in an exception being thrown when the page is visited.

Consider the following CheckBoxList, which has its RepeatLayout property set to UnorderedList.

<asp:CheckBoxList ... runat="server" DataTextField="CategoryName"
       DataValueField="CategoryID" RepeatLayout="UnorderedList">
</asp:CheckBoxList>

When bound to the categories in the Northwind database the above control will render the following markup:

<ul id="...">
   <li><input id="..." type="checkbox" name="..." value="1" /><label for="...">Beverages</label></li>
   <li><input id="..." type="checkbox" name="..." value="1" /><label for="...">Condiments</label></li>
   <li><input id="..." type="checkbox" name="..." value="1" /><label for="...">Confections</label></li>
   ...
</ul>

Note how the CheckBoxList renders an unordered list (<ul>) and how each check box is rendered within a list item (<li>).

The idea with the OrderedList and UnorderedList options is that the check boxes or radio buttons can be laid out using CSS. There are many web pages that discuss how to use CSS to layout elements in ordered and unordered lists.

Conclusion

ASP.NET 4.0 gives Web Form developers greater control over the rendered markup. Many templated controls that had previously added <table> elements for styling purposes. These tags can now be optionally suppressed with a new property, RenderOuterTable. Similarly, the CheckBoxList and RadioButtonList controls' RepeatLayout property has been expanded to include two new settings - OrderedList and UnorderedList - which offer developers alternative ways to influence the markup generated by these controls.

Also, the ListView control has been tidied up a bit, making the LayoutTemplate optional.

Happy Programming!

Reasons why you must trust ASPHostPortal.com

Every provider will tell you how they treat their support, uptime, expertise, guarantees, etc., are. Take a close look. What they’re really offering you is nothing close to what ASPHostPortal does. You will be treated with respect and provided the courtesy and service you would expect from a world-class web hosting business.

You’ll have highly trained, skilled professional technical support people ready, willing, and wanting to help you 24 hours a day. Your web hosting account servers are monitored from three monitoring points, with two alert points, every minute, 24 hours a day, 7 days a week, 365 days a year. The followings are the list of other added- benefits you can find when hosting with us:

- DELL Hardware
Dell hardware is engineered to keep critical enterprise applications running around the clock with clustered solutions fully tested and certified by Dell and other leading operating system and application providers.
- Recovery Systems
Recovery becomes easy and seamless with our fully managed backup services. We monitor your server to ensure your data is properly backed up and recoverable so when the time comes, you can easily repair or recover your data.
- Control Panel
We provide one of the most comprehensive customer control panels available. Providing maximum control and ease of use, our Control Panel serves as the central management point for your ASPHostPortal account. You’ll use a flexible, powerful hosting control panel that will give you direct control over your web hosting account. Our control panel and systems configuration is fully automated and this means your settings are configured automatically and instantly.
- Excellent Expertise in Technology
The reason we can provide you with a great amount of power, flexibility, and simplicity at such a discounted price is due to incredible efficiencies within our business. We have not just been providing hosting for many clients for years, we have also been researching, developing, and innovating every aspect of our operations, systems, procedures, strategy, management, and teams. Our operations are based on a continual improvement program where we review thousands of systems, operational and management metrics in real-time, to fine-tune every aspect of our operation and activities. We continually train and retrain all people in our teams. We provide all people in our teams with the time, space, and inspiration to research, understand, and explore the Internet in search of greater knowledge. We do this while providing you with the best hosting services for the lowest possible price.
- Data Center
ASPHostPortal modular Tier-3 data center was specifically designed to be a world-class web hosting facility totally dedicated to uncompromised performance and security
- Monitoring Services
From the moment your server is connected to our network it is monitored for connectivity, disk, memory and CPU utilization – as well as hardware failures. Our engineers are alerted to potential issues before they become critical.
- Network
ASPHostPortal has architected its network like no other hosting company. Every facet of our network infrastructure scales to gigabit speeds with no single point of failure.
- Security
Network security and the security of your server are ASPHostPortal’s top priorities. Our security team is constantly monitoring the entire network for unusual or suspicious behavior so that when it is detected we can address the issue before our network or your server is affected.
- Support Services
Engineers staff our data center 24 hours a day, 7 days a week, 365 days a year to manage the network infrastructure and oversee top-of-the-line servers that host our clients’ critical sites and services.



ASP.NET 4.0 Hosting - ASPHostPortal :: WebForms Routing Extension Methods

clock October 6, 2010 10:34 by author Jervis

Here is the sample:

using System;

using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Routing;
 
   public static class RouteExtensions
   {
     
   public static string GetUrlForRoute(this System.Web.UI.Page page, string routeName, RouteValueDictionary parameters)
         {
   
         VirtualPathData vpd= RouteTable.Routes.GetVirtualPath(null, routeName, parameters);
 
           return vpd.VirtualPath;
         }
         public static string GetUrlForRoute(this System.Web.UI.Page page, RouteValueDictionary parameters)
 
        {
             VirtualPathData vpd = RouteTable.Routes.GetVirtualPath(null, parameters);
             return vpd.VirtualPath;
         }
 
         public static void IgnoreRoute(this RouteCollection routes, string url)
         {
             routes.IgnoreRoute(url, null);
         }
 
         public static void IgnoreRoute(this RouteCollection routes, string url, object constraints)
         {
             if (routes == null)
             {
                 throw new ArgumentNullException("routes");
             }
             if (url == null)
             {
                 throw new ArgumentNullException("url");
             }
             IgnoreRouteInternal internal3 = new IgnoreRouteInternal(url);
             internal3.Constraints = new RouteValueDictionary(constraints);
             IgnoreRouteInternal item = internal3;
             routes.Add(item);
         }
 
         public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile)
         {
             return routes.MapRoute(name, url, physicalFile, null, null);
         }
 
         public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile, object defaults)
         {
             return routes.MapRoute(name, url, physicalFile, defaults, null);
         }
 
         public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile, string[] namespaces)
         {
             return routes.MapRoute(name, url, null, null, namespaces);
         }
 
         public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile, object defaults, object constraints)
         {
             return routes.MapRoute(name, url, physicalFile,  defaults, constraints, null);
         }
 
         public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile, object defaults, string[] namespaces)
         {
             return routes.MapRoute(name, url, physicalFile,  defaults, null, namespaces);
         }
 
         public static Route MapRoute(this RouteCollection routes, string name, string url, string physicalFile, object defaults, object constraints, string[] namespaces)
         {
             if (routes == null)
             {
                 throw new ArgumentNullException("routes");
             }
             if (url == null)
             {
                 throw new ArgumentNullException("url");
             }
             if (physicalFile == null)
             {
                 throw new ArgumentNullException("physicalfile");
             }
             Route route2 = new Route(url, new PageRouteHandler(physicalFile));
             route2.Defaults = new RouteValueDictionary(defaults);
             route2.Constraints = new RouteValueDictionary(constraints);
             Route item = route2;
             if ((namespaces != null) && (namespaces.Length > 0))
             {
                 item.DataTokens = new RouteValueDictionary();
                 item.DataTokens["Namespaces"] = namespaces;
             }
             routes.Add(name, item);
             return item;
         }
 
         // Nested Types
         private sealed class IgnoreRouteInternal : Route
         {
             // Methods
             public IgnoreRouteInternal(string url)
                 : base(url, new StopRoutingHandler())
             {
             }
 
             public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary routeValues)
             {
                 return null;
             }
         }
     }

So, how do you use these methods?

These extensions add a few simple methods:

MapRoute

Stolen shamelessly from MVC. These methods provide a shortcut to defining Routes for WebForms.

RouteCollection.MapRoute(string name, string url, string physicalFile);

For example to map a simple route you can now do:

RouteTable.Routes.MapRoute(“ProductDetailsRoute”, “products/{productid}”, “~/ProductDetails.aspx”);

Also has a couple of variants allowing for defining defaults etc…

RouteCollection.MapRoute(string name, string url, string physicalFile, object defaults);

RouteCollection.MapRoute(string name, string url, string physicalFile, object defaults, string[] namespaces);

GetRouteForUrl

Page.GetUrlForRoute(string routeName, RouteValueDictionary parameters);

Using a specifically named route and RouteValueDictionary containing a number of parameters will give you back a string containing the Url to use. REALLY useful in databound apps!

For example:

<asp:hyperlink ID="HyperLink1" runat="server"  NavigateUrl='<%# Page.GetUrlForRoute("ProductDetailsRoute",new RouteValueDictionary( new {productid= Eval("ProductID")}))%>'  Text="Details"></asp:hyperlink>

Page.GetUrlForRoute(RouteValueDictionary parameters);

Same thing, but auto-matches the RouteValueDictionary parameters against a route…

IgnoreRoute

Allows you to define urls which should not be tried for matches against routes (can be useful for upgrading WebForms apps)

RouteCollection.IgnoreRoute(string url);

RouteCollection.IgnoreRoute(string url, object constraints);

Reasons why you must trust ASPHostPortal.com

Every provider will tell you how they treat their support, uptime, expertise, guarantees, etc., are. Take a close look. What they’re really offering you is nothing close to what ASPHostPortal does. You will be treated with respect and provided the courtesy and service you would expect from a world-class web hosting business.

You’ll have highly trained, skilled professional technical support people ready, willing, and wanting to help you 24 hours a day. Your web hosting account servers are monitored from three monitoring points, with two alert points, every minute, 24 hours a day, 7 days a week, 365 days a year. The followings are the list of other added- benefits you can find when hosting with us:

- DELL Hardware
Dell hardware is engineered to keep critical enterprise applications running around the clock with clustered solutions fully tested and certified by Dell and other leading operating system and application providers.
- Recovery Systems

Recovery becomes easy and seamless with our fully managed backup services. We monitor your server to ensure your data is properly backed up and recoverable so when the time comes, you can easily repair or recover your data.
- Control Panel

We provide one of the most comprehensive customer control panels available. Providing maximum control and ease of use, our Control Panel serves as the central management point for your ASPHostPortal account. You’ll use a flexible, powerful hosting control panel that will give you direct control over your web hosting account. Our control panel and systems configuration is fully automated and this means your settings are configured automatically and instantly.
- Excellent Expertise in Technology

The reason we can provide you with a great amount of power, flexibility, and simplicity at such a discounted price is due to incredible efficiencies within our business. We have not just been providing hosting for many clients for years, we have also been researching, developing, and innovating every aspect of our operations, systems, procedures, strategy, management, and teams. Our operations are based on a continual improvement program where we review thousands of systems, operational and management metrics in real-time, to fine-tune every aspect of our operation and activities. We continually train and retrain all people in our teams. We provide all people in our teams with the time, space, and inspiration to research, understand, and explore the Internet in search of greater knowledge. We do this while providing you with the best hosting services for the lowest possible price.
- Data Center
ASPHostPortal modular Tier-3 data center was specifically designed to be a world-class web hosting facility totally dedicated to uncompromised performance and security
- Monitoring Services

From the moment your server is connected to our network it is monitored for connectivity, disk, memory and CPU utilization – as well as hardware failures. Our engineers are alerted to potential issues before they become critical.
- Network

ASPHostPortal has architected its network like no other hosting company. Every facet of our network infrastructure scales to gigabit speeds with no single point of failure.
- Security

Network security and the security of your server are ASPHostPortal’s top priorities. Our security team is constantly monitoring the entire network for unusual or suspicious behavior so that when it is detected we can address the issue before our network or your server is affected.
- Support Services

Engineers staff our data center 24 hours a day, 7 days a week, 365 days a year to manage the network infrastructure and oversee top-of-the-line servers that host our clients’ critical sites and services.



About ASPHostPortal.com

We’re a company that works differently to most. Value is what we output and help our customers achieve, not how much money we put in the bank. It’s not because we are altruistic. It’s based on an even simpler principle. "Do good things, and good things will come to you".

Success for us is something that is continually experienced, not something that is reached. For us it is all about the experience – more than the journey. Life is a continual experience. We see the Internet as being an incredible amplifier to the experience of life for all of us. It can help humanity come together to explode in knowledge exploration and discussion. It is continual enlightenment of new ideas, experiences, and passions


Author Link


Corporate Address (Location)

ASPHostPortal
170 W 56th Street, Suite 121
New York, NY 10019
United States

Sign in