Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7591627
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 30, 20262026-05-30T20:41:54+00:00 2026-05-30T20:41:54+00:00

I’ve been googling for a bit now, and maybe I’m not searching for the

  • 0

I’ve been googling for a bit now, and maybe I’m not searching for the correct term. I want to have a single “shell” asp.net web application that is able to load/run other web applications (much like prism does with Silverlight xap files). However, I can’t seem to find any verbage other than “sub projects”, which require one to add the project to the solution. I simply want to drop WebApplicationB.dll into the Bin folder and have ShellWebApplication load the dll and display the default page in an iframe or something.

How can this be done or where can I find information on how this can be done?

Update: Offering a bounty to someone who can show code or point me to a sample project that shows how this can be done. Want to be able to “load” another asp.net web site/web application and its dependencies (dll or no) AND display that loaded asp.net web application’s default.aspx start page without altering a Visual Studio solution that already contains the shell asp.net web application.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-30T20:41:56+00:00Added an answer on May 30, 2026 at 8:41 pm

    This is actually fairly trivial to accomplish; we do it.

    The main key is that your “modules” should either have their own content folders or you need to be careful not to have the exact same file names at the same location.

    Consider the following contrived example:

    Shell
      \default.aspx
      \login.aspx
      \Images          <- images used by shell
      \css             <- primary CSS files
      \Pages\Accounts  <- all of the account editing pages here.
    
    Module1
      \Module1\Pages       <- web pages specific to Module 1 
      \Module1\Images      <- images specific to module 1
      \CSS\Module1.css     <- Optionally, you can place the Module 1 CSS file into the main CSS directory.  
    

    With this structure you’ll be able to copy both web applications into the same target directory. Due to how .Net functions this will work just fine and both will be executed within the same process space.

    Of course, you need a way for the Shell to know about Module 1. And you want to be able to deploy Shell without Module1. The best way here is to add an assembly project that contains the interface definition you need. You add a reference to this project to both Shell and Module 1. Something like:

    Core
      \ObjectModel\MenuOption.cs
      \Extension\IAppModule.cs
      \Extension\PluginFactory.cs
    

    Where IAppModule.cs looks something like:

    public interface IAppModule {
      Collection<MenuOption> GetMenu( );
    }
    

    MenuOption.cs looks something like:

    public class MenuOption {
      public string Href { get; set; } // url the option goes to
      public string Title { get; set; } // display name of the menu option
    }
    

    The PluginFactory.cs is similar to:

    public sealed class PluginFactory {
      PlugingFactory() { }
    
      public static IAppModule LoadPlugin( string typeName ) {
        Type theType = Type.GetType(typeName);
        return (IAppModule)Activator.CreateInstance(theType);
      }
    }
    

    The purpose of GetMenu here is to return a collection of references to the available pages in the module.

    Inside Module1 you would implement the interface like:

    public class AppModule : IAppModule {
      public Collection<MenuOption> GetMenu() {
        Collection<MenuOption> result = new Collection<MenuOption>();
        result.add(new MenuOption() { Href = "~/Module1/Pages/AccountList.aspx", Title="Account List"});
        result.add(new MenuOption() { Href = "~/Module1/Pages/NewAccount.aspx", Title="New Account"});
    
        return result;
      }
    }
    

    So, at this point we have 2 web app projects and 1 assembly project. The web app projects don’t know anything about each other.

    The next step is to tell the Shell that Module1 exists. We do this by having a database table of available modules. You could do the same thing in a web.config file. The main thing is that the shell project needs the Type Name and reference to Module 1’s AppModule class. For example: “Module1.AppModule, Module1“

    Then, inside your shell master page you can do something like:

    protected void LoadMenu() {
      // get list of available modules, just assuming mdules is string[] 
      foreach(String moduleId in moduleIds) {
        IAppModule module = PluginFactory.LoadPlugin(moduleId);    // now you have a reference to the module
        Collection<MenuOption> options = module.GetMenu();
        // and now we have all of the menu options for that module...
    
      }
    }
    

    For bonus points, we have a Master page in the root of our shell project called “Main.master” Each of our modules also has a “Main.master” master page in their root. The ones in the modules have the build action set to none and copy to output set to Do not copy.

    The master page is where we actually load the menu options. Also, all of the other masters within each module inherit from this primary one. Interestingly, descendent master pages don’t care about the actual “type” of the parent, just the location of that page. This means you can control your main master page from the shell and have each module “inherit” that simply by NOT deploying their overall master page.

    For example:

    Shell
      /main.master  <- includes the basic CSS references, content structure and loads the various menus.
    
    Module1
      /main.master  <- this file will NEVER be deployed and is only here to aid in testing the module independently of the shell
      /Module1/Module1.master <- inherits from main.master, adding other common elements for the module.
    

    Because of how master page inheritence works, the Module1.master file refers to it’s parent by “~/main.master”. By not deploying the modules main.master and instead just deploying the shell’s main.master we are given a LOT of flexibility.

    At the end, you can deploy the shell project onto an IIS server. Later you can deploy ModuleX right on top of the shell project (no virtual directories needed) and it will just work.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a jquery bug and I've been looking for hours now, I can't
I have a string like this: La Torre Eiffel paragonata all&#8217;Everest What PHP function
this is what i have right now Drawing an RSS feed into the php,
I have a French site that I want to parse, but am running into
I have been unable to fix a problem with Java Unicode and encoding. The
I have a .ini file as follows: [playlist] numberofentries=2 File1=http://87.230.82.17:80 Title1=(#1 - 365/1400) Example
link Im having trouble converting the html entites into html characters, (&# 8217;) i
I have just tried to save a simple *.rtf file with some websites and
I want to count how many characters a certain string has in PHP, but
I have a small JavaScript validation script that validates inputs based on Regex. I

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.