如何在ASP.NET 4 WebForm应用程序中使用AppDomains?

时间:2011-08-30 15:38:09

标签: c# .net asp.net asp.net-mvc-3

IIS / ASP.NET中的AppDomains

鉴于IIS中托管的ASP.NET WebForms门户以及使用ASP.NET MVC3编写的独立模块,在运行时执行模块时使用的适当API是什么?

  1. AppDomain API
  2. ApplicationHost API
  3. AppManagerAppDomainFactory类
  4. 不合适,使用IIS内置隔离机制并找到另一种方法在门户网站的MasterPage结构中托管MVC3生成的内容
  5. ...

  6. 背景

    我们有一个遗留的自定义门户网站,其中包含许多使用C#/ WebForms编写的应用程序。目前,门户网站和所有应用程序都存在于一个项目中;它们都是同时部署的。我想将应用程序与门户分离,将它们作为模块实现到门户,并在运行时隔离每个模块的执行。我们想在ASP.NET MVC 3中移植/重写每个应用程序。

    当我们移植每个应用程序时,我最初的想法是让门户网站处理每个请求,在appDomain中加载app /模块,将请求转发给模块,获取生成的html,并将其放在门户网站MasterPage的ContentPlaceHolder中。在我走这条路之前,我认为在基础知识上获得一些StackOverflow验证是明智的。

1 个答案:

答案 0 :(得分:2)

当插件由第三方提供并且您希望对插件应用严格的安全限制时,将插件/模块隔离到单独的AppDomain中非常有用。当你自己编写插件时,这种隔离级别是不必要的,并且会适得其反。

您可以通过适当的项目参考实现必要的隔离级别。定义一个单独的项目,其中包含插件API的接口和任何关联的值对象。让你的插件引用这个项目并实现适当的API。然后您的主机应用程序应仅通过此API引用插件。这样,无需管理多个AppDomain即可实现代码分离和维护。