Running ASP.NET within a Command-Line .exe (Outside of IIS)
Published: 23 Oct 2003
Unedited - Community Contributed
This articles demonstrates a simple way to process ASP.NET requests within a command line.
by Scott Guthrie
Average Rating: This article has not yet been rated.
Views (Total / Last 10 Days): 47115/ 74


One of the more esoteric features of ASP.NET is its ability to run outside of IIS. Specifically, it supports a hosting framework (within the System.Web.Hosting namespace) that enables you to run it on top of other web servers, within command line exes, etc. The below sample demonstrates a simple way to process ASP.NET requests within a command line exe (MyHost.exe). When run, MyHost.exe spins of ASP.NET (threadpool and all) and interprets each parameter to the executable as a URL request to a local file. It then outputs the content back to the console window. To try this out, perform the following steps:

1) Copy The MyHost.cs and Test.aspx files to a local directory

2) Compile MyHost.exe by typing “csc MyHost.cs /r:System.Web.dll” within a command prompt in the directory

3) Type “MyHost.exe Test.aspx”


One interesting use of this functionality is to “pre-process” dynamic ASP.NET requests – saving the output as static .htm files that you then prop onto a server. You can do this with MyHost.exe by “pipeing” the output automatically to a static file. For example:
      MyHost.exe Test.aspx > Test.htm

using System;
using System.IO;
using System.Web;
using System.Web.Hosting;
public class MyExeHost : MarshalByRefObject {
    public void ProcessRequest(String page) {
        HttpRuntime.ProcessRequest(new SimpleWorkerRequest(page, null, Console.Out));
    public static void Main(String[] arguments) {
        MyExeHost host = (MyExeHost)ApplicationHost.CreateApplicationHost(typeof(MyExeHost), 
			"/foo", Directory.CurrentDirectory);
        foreach (String page in arguments) {
      <h1> Hi DevLabs, 2 the time is now: <%=Now%> </h1>

The results of compiling and running the source files (located here) are listed in the Command window screenshot below (forgive the long path to the folder):

User Comments

Title: great stuff   
Name: great stuff
Date: 5/30/2012 9:13:14 AM
Great Stuff
Title: ';   
Name: ;'
Date: 5/30/2012 9:10:34 AM
Title: Copy Exe To Bin or it crashes   
Name: Tim
Date: 3/20/2010 2:23:49 PM
Hi, I had to copy the exe generated into a subdirectory called bin in order for this to work. Otherwise :
System.IO.FileNotFoundException: Could not load file or assembly 'MyHost.

Otherwise, excellent demo.

Here is another example using SimpleWorkerRequest:
Title: Invalid URI error   
Name: Sparky
Date: 5/1/2007 9:21:07 PM
Hi, I keep getting "Invalid URI" errors when I try your example on either WinXP or Win2000. I'm struggling to find any other examples similar to yours - can you please advise why I'm getting this error?

Product Spotlight
Product Spotlight 

Community Advice: ASP | SQL | XML | Regular Expressions | Windows

©Copyright 1998-2015  |  Page Processed at 11/29/2015 12:11:06 AM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search