AspAlliance.com LogoASPAlliance: Articles, reviews, and samples for .NET Developers
URL:
http://aspalliance.com/articleViewer.aspx?aId=220&pId=-1
Running ASP.NET within a Command-Line .exe (Outside of IIS)
page
by Scott Guthrie
Feedback
Average Rating: This article has not yet been rated.
Views (Total / Last 10 Days): 24929/ 29

Overview

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”

Code
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

-------------------------------
MyHost.cs
----------------------------------------------
 
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) {
            
            host.ProcessRequest(page);
        }
    }
}
 
-------------------------------------------
Test.aspx
----------------------------------------
 
<html>
   <body>
      <h1> Hi DevLabs, 2 the time is now: <%=Now%> </h1>
   </body>
</html>
Results

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):


Product Spotlight
Product Spotlight 

©Copyright 1998-2024 ASPAlliance.com  |  Page Processed at 2024-04-18 8:42:50 PM  AspAlliance Recent Articles RSS Feed
About ASPAlliance | Newsgroups | Advertise | Authors | Email Lists | Feedback | Link To Us | Privacy | Search