Useful commands when working with ASP.NET in IIS

As a developer I quite often need to e.g. restart IIS, stop or start a web application or list all started/stopped web applications or application pools on my machine. Internet Information Service (IIS) comes with a couple of handy command tools that makes it possible to create small scripts that starts or stops applications.

There are several ways to restart a ASP.NET web application hosted by IIS.

  • Make a minor change in web.config simply by adding a space character somewhere in the whitespace. IIS has listeners that keep track of the configuration files and when a change occur the web application pool for that web application will be restarted.
  • Use IIS to restart the web application or application pool used by the web application.
  • Execute the APPCMD RECYCLE APPPOOL “MyAppName”. This command will recycle the app pool used by the web application with the name MyAppName.

APPCMD

The APPCMD single command line tool can be used to administer sites, application pools, web applications, etc. in IIS. The tool can be found in C:\Windows\System32\inetsrv\ on most Windows machines. Read more about APPCMD here.

Sites

A site is the web application that usually has been created in IIS Manager. It is possible to add, delete, configure, start, stop and list the sites hosted by IIS on a machine.

List all web sites hosted by IIS on the current machine:

%systemroot%\system32\inetsrv\APPCMD\APPCMD LIST SITE

Stop and start a specific web site.

%systemroot%\system32\inetsrv\APPCMD\APPCMD STOP SITE “MySite”

%systemroot%\system32\inetsrv\APPCMD\APPCMD START SITE “MySite”

Web applications

A web application is hosted by a site and the name of the web application will either be the name of the site or a part of the URL that leads to the web application. It is possible to add, delete, configure and list web applications hosted by sites in IIS. Read more about the difference between sites and web applications in IIS here.

List all web applications hosted by IIS on the current machine:

%systemroot%\system32\inetsrv\APPCMD\APPCMD LIST APP

Application pools

In IIS application pools are being used to prevent one web application from affecting other web applications. If e.g. a web application experiences problems that web application will not bring down the other applications since it will be hosted by a separate application pool (normally). In older versions of IIS a single process took care of all web sites configured on that machine. The new architecture makes it more easy to maintain web applications and prevent them from affecting each other. It is possible to list, configure, add, delete, start, stop and recycle application pools in IIS on the current machine.

List all application pools on the current machine:

%systemroot%\system32\inetsrv\APPCMD\APPCMD LIST APPPOOL

Recycle an application pool on the current machine:

%systemroot%\system32\inetsrv\APPCMD\APPCMD RECYCLE APPPOOL “MyAppPool”

Worker processes

A worker process is used by application pools to execute the requests sent to the sites or web applications.

List all worker processes used by IIS on the current machine:

%systemroot%\system32\inetsrv\APPCMD\APPCMD LIST WP

 

IISRESET

IISRESET will stop and restart the web server service including all web applications hosted by IIS.

NOTE: IISRESET should be your last resort if you are working on a machine that is not in production. If you execute this command on a machine that is hosting other web applications (even non ASP.NET web applications hosted by IIS) you WILL restart them as well which might not be desirable.

Examples of usage of IISRESET

Restart the webserver on the current machine:

IISRESET

Or:

IISRESET /RESTART

Get status for the Windows services used by IIS:

IISRESET /STATUS

Stop the Windows services used by IIS:

IISRESET /STOP

Start the Windows services used by IIS:

IISRESET /START

Playing with Regular Expressions, part 2 – Find the first word in a sentence

In all the examples below I have used the same sample text (you will see it in the samples). I have used an excellent tool named Expresso to evaluate all expressions in this blog entry.

Problem

I want to find the first word in all sentences in a text.

Solution

Use the following pattern to find all the first words in a string without any formatting (HTML).

(?:^|\r\n|\.\s+)(?<myMatchedWord>\w+)

 

The pattern above will match the following words:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eu sem nisl.
Nulla elementum consectetur leo nec consequat. Vestibulum quis libero sit amet arcu euismod bibendum a.

Nulla elementum:    1389-89-1443

Praesent a nibh sed augue mollis vehicula.
Vestibulum nisl elit, eleifend a tristique nec, faucibus a sem.

Explanation

  • The part found in the beginning of the expression, (?:^|\r\n|\.\s+), will determine if the word occur in the beginning of the string or after a previous line in the sentence.
  • The pipe character has the same meaning as the OR operator in code. In the expression above we have three blocks that either one has to be true in order to successfully match the beginning of the sentence.
  • The first part of the expression, (?:^, before the pipe character instructs regex that we only want to match the pattern and not store it in the group of matches. We also states that we are looking at the start of the string by using the caret character.
  • The second part of the expression tries to match carriage return and line feed. We can add more OR cases if we like, e.g. if we only have carriage return or only line feed.
  • The third part after the pipe character, \.\s+, will search for the first word somewhere in a paragraph, e.g. after a previous sentence that ends with a dot and has one or more whitespace characters.
  • The second parenthesis tries to match the first word and will put the word found in a named group named myMatchedWord when a word is successfully matched.
  • When using named groups in regex you have to use the (?<myName>myExpression) construct.  

Playing with Regular Expressions, part 1 – Find the last word in a sentence

As a developer I quite often run into situations where I need to find an occurrence of a word or phrase in a text or some kind of number or pattern in a string. Regular expressions makes these tasks relatively simple and usually you will find loads of examples on how to match your specific pattern on the internet. This blog series will cover how to think when working with regular expressions. 

In all the examples in this blog series I have used the same sample text (you will see it in the samples). I have used an excellent tool named Expresso to evaluate all expressions in this blog entry. Of course it is possible to tweak the expressions in my examples below so that it searches other patterns as well.

Problem

I want to retrieve the last word in a sentence.

Solution

Use the \b anchor together with the pattern that ends the sentence to instruct regex that you only want the word that appears right before the dot-character, carriage return (and/or) line feed or the dollar-character that represent the end of the string.

The pattern below will match all the last words in each sentence.

(?<myNamedGroup>\b\w+)(?:\.|\r\n)

 

You should se the following result when executing the expression against the sample text.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut eu sem nisl.
Nulla elementum consectetur leo nec consequat. Vestibulum quis libero sit amet arcu euismod bibendum a.

Nulla elementum:    1389-89-1443

Praesent a nibh sed augue mollis vehicula.
Vestibulum nisl elit, eleifend a tristique nec, faucibus a sem.

Explanation

  • The first parenthesis tries to match the first word and will put the word found in a named group named myMatchedWord when a word is successfully matched.
  • \b\w+ will match every word in the text that has at least one character. The \b anchor matches either the beginning or the end of a word.
  • (?:\.|\r\n) will match either a dot or the combination of carriage return and line feed. The (?: part of the expression tells regex to skip the pattern in the matched content.
  • The whole expression together will return all words where the first part of the expression is combined with one of the expressions found in the second part.