Jeff Wallace
Apr 9, 2010
(3 votes)

EPiServer CMS and Existing ASP.NET/ASP Applications

Based on CMS 5 R2 SP2 and IIS 7.5

Many customer moving to EPiServer CMS for their content management may have existing ASP.NET or ASP applications that they don’t want to manage through EPiServer.  However, these applications contain critical business functionality that is necessary to utilize, and naturally they’d like to access this functionality using the same domain as the pages based on EPiServer.  The question is, is it possible to make these applications subdirectories of the domain root without EPiServer interfering?  The simple answer, YES!

The steps I followed aren’t too exciting so if the answer above leaves you feeling content stop reading now.  If you’re curious as to my process, by all means, read on…



I started by creating two very basic web apps, both with a login page.  One in ASP.NET and one in classic ASP.  I didn’t do anything special here so I’ll avoid putting these details here to reduce the odds of you falling asleep too quickly.

Next I created a very basic EPiServer site.  Fancy, right?


IIS was not configured to handle classic ASP for my site so I needed to fix this.  To do so I need to create a mapping to tell IIS what module should respond to requests for an .asp extension.  I went into the IIS management console for the EPiServer site and selected “Handler Mappings”. 


Once there I selected “Add Script Map…”


And filled in the form accordingly:

  1. Name – “ClassicASP” (could be anything)
  2. Request path - “*.asp”
  3. Executable – Path to asp.dll



In the IIS management console I created a new virtual directory by right clicking on my site name and selected “Add Virtual Directory…”.


In my case I named this directory “ASPNETLogin” but of course it can be whatever you like.  Just like a real world scenario my simple web applications live in a different location than my EPiServer site and of course I selected that location for my virtual directory path.



And like magic, a virtual directory appeared…


For test 1, I navigated to my login.aspx (ASP.NET) page and everything looked as expected.


For test 2, I navigated to my classicasplogin.asp (classic ASP) page and everything looked as expected there as well.


Since I drank a couple of extra cups of coffee I was so wound up on caffeine to be a real “go getter”.  ;)  I went a step further and created a page in EPiServer with the same name as my virtual directory “ASPNetLogin”.


Again, I waved an invisible magic wand and all was well when I loaded my EPiServer Page…


…and also with my ASP.NET and ASP pages (though I’m only going to post a screen shot of one of them).  Note the path in the above and below screen shots.


As stated early on, nothing too exciting here, but I wanted to walk through these steps quickly for validation and post a short blog on it for reference.  Plain and simple, as it should be.  I tried to sneak in a couple of jokes to keep it more interesting, but alas my jokes weren’t too great either!  I suppose it’s time for a double espresso…

Apr 09, 2010


Sep 21, 2010 10:33 AM

Quality information again, Jeff! Thanks for the effort on this!

Sep 21, 2010 10:33 AM

Quality information again, Jeff! Thanks for the effort on this!

Please login to comment.
Latest blogs
Improve error handling for visitor groups

In CMS UI 12.15.0 we added several improvements in handling errors for visitor groups. The visitor group list and detailed visitor group page will...

Linh Nguyen | Dec 8, 2022

Optimizely SendGrid SMTP host is deprecated

SendGrid is a services for sending email that is included in Optimizely DXP. Previously was the recommended SMTP server to use,...

Tomas Hensrud Gulla | Dec 4, 2022 | Syndicated blog

Hosting Optimizely CMS 12 on Docker Engine

Since Optimizely CMS can now be deployed as a Docker container, here is a demonstration of building, running and scaling an Optimizely CMS 12 site ...

Stefan Holm Olsen | Dec 4, 2022 | Syndicated blog

How to use CacheTagHelper with content areas in Optimizely CMS 12

I might be going out on a limb here - if you have a better solution, feel very free to share it!  Upgrading your Optimizely web application from .N...

Andreas J | Dec 2, 2022

The 1001st Piece in your 1000 Piece Puzzle: .NET Default Interface Functions

I was recently working with a client who wanted a reasonably large subsystem added to Optimizely that would add automated management to their...

Greg J | Nov 28, 2022 | Syndicated blog

Video Demonstration, creating a CMS12 Alloy Sample Site

Hey All Below you will find a quick video demonstration on how to install a local version of Alloy Sample based on CMS12 / .Net 6. As you will see ...

Minesh Shah (Netcel) | Nov 28, 2022