How to Make Apache run ASP.NET / ASP.NET 2.0

You all might be wondering why we need Apache, since we have IIS to host our ASP.NET applications. But it’s just a trial to see the potential of ASP.NET to work smoothly with other Web Servers.

Apache has been a stable and strong web server for hosting different web applications made using Perl, PHP, Ruby etc. Linux, Apache, MYSQL, PHP(LAMP) is one of the popular development platform in the world. Because the stability of this combination offers, most of the application developers around the world prefering to use LAMP as their application development primary target.

But i previously also tried with Apache ASP.NET combination and found interesting. Since apache takes less resource and works smoothly if the configuration is right.

I recently came across Ohad Isreli’s Blog . Which was quite interesting and i realized what i missed first time in my previous trials. The solution is simple. Just read through the following descriptions.

Following are the instruction to make Asp.Net work under apache:

Install Apache 2.0.54

Install Mod_AspDotNet

Add at the end of C:Program FilesApache GroupApache2confhttpd.conf the following lines


#asp.net
LoadModule aspdotnet_module "modules/mod_aspdotnet.so"

AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo

<IfModule mod_aspdotnet.cpp>
  # Mount the ASP.NET /asp application
  AspNetMount /SampleASP "c:/SampleASP"
  #/SampleASP is the alias name for asp.net to execute
  #"c:/SampleASP" is the actual execution of files/folders  in that location

  # Map all requests for /asp to the application files
  Alias /SampleASP "c:/SampleASP"
  #maps /SampleASP request to "c:/SampleASP"
  #now to get to the /SampleASP type http://localhost/SampleASP
  #It'll redirect http://localhost/SampleASP to "c:/SampleASP"

  # Allow asp.net scripts to be executed in the /SampleASP example
  <Directory "c:/SampleASP">
    Options FollowSymlinks ExecCGI
    Order allow,deny
    Allow from all
    DirectoryIndex index.htm index.aspx
   #default the index page to .htm and .aspx
  </Directory>

  # For all virtual ASP.NET webs, we need the aspnet_client files
  # to serve the client-side helper scripts.
  AliasMatch /aspnet_client/system_web/(d+)_(d+)_(d+)_(d+)/(.*) "C:/Windows/Microsoft.NET/Framework/v$1.$2.$3/ASP.NETClientFiles/$4"
  <Directory "C:/Windows/Microsoft.NET/Framework/v*/ASP.NETClientFiles">
    Options FollowSymlinks
    Order allow,deny
    Allow from all
  </Directory>
</IfModule>
#asp.net

Create a directory c:SampleASP and insert in it the index.aspx

Restart apache server :
Start-> Apache HTTP Server 2.0.54 ->
Control Apache Server -> Restart

Open Explorer and navigate to http://localhost/SampleASP/index.aspx

If everything worked fine you should get a nice asp.net page working.

Sample Source for
— index.aspx —

<%@ Page Language="VB" %>
<html>
   <head>
      <link rel="stylesheet"href="intro.css">
   </head>
   <body>
       <center>
       <form action="index.aspx" method="post">
           <h3> Name: <input id="Name" type=text>
           Category:  <select id="Category" size=1>
                          <option>One</option>
                          <option>Two</option>
                          <option>Three</option>
                      </select>
           </h3>
           <input type=submit value="Lookup">
           <p>
           <% Dim I As Integer
              For I = 0 to 7 %>
              <font size="<%=I%>"> Sample ASP.NET TEST</font> <br>
           <% Next %>
       </form>
       </center>
   </body>
</html>

Your ASP.NET Application is UP and running on ASP.NET. You might experience slight problems with Session management, with proper configuration you can resolve it or find another alternative.

That’s all for now. Will update this with more details later.. I am in work, and thought of writing this when i found it.

Thanks to Ohad Israeli, for his wonderful article on blog.