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

[code lang=”pl”]

#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

[/code]

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 —

[code lang=”vbnet”]
<%@ 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>
[/code]

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.

7 thoughts on “How to Make Apache run ASP.NET / ASP.NET 2.0

  1. This works beautifully, but fails on WCF webservices.
    For some reason these only run under localhost under Apache. I finally managed to get this to work externally by ensuring Apache also listening on 127.0.0.1:80 and using mod_rewrite.


    RewriteEngine on
    # To internally change any hostname to localhost - this helps fool WFC to run under apache mod_aspdotnet
    # For sites running on a port other than 80 and a hostname other than localhost
    RewriteCond %{HTTP_HOST} !^localhost [NC]
    RewriteCond %{SERVER_PORT} !^80$
    RewriteRule ^/(.*) http://localhost/$1 [L,P]

    # For sites running on port 80 and a hostname other than localhost
    RewriteCond %{HTTP_HOST} !^localhost [NC]
    RewriteRule ^/(.*) http://localhost/$1 [L,P]

    hope this helps someone

  2. I have successfully Run it. But when I run Projects compiled in .NET Framework 4 it gives the following Error : –
    “”

    Help

  3. I have successfully Run it. But when I run Projects compiled in .NET Framework 4 it gives the following Error : –
    “compilation debug=”true” targetFramework=4.0″

    Help

  4. To Royael:
    Try to add the AspNetVersion in your http.conf
    Example:

    AspNetMount /SampleASP “c:/SampleASP”
    AspNetVersion v4.0.30319

    Hope this help

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.