自定义代码的自定义文件夹

时间:2012-10-08 07:24:53

标签: c# asp.net .net webforms

我们正在对我们的应用程序进行重组,目前的想法是将代码分解为核心库代码+为我们的开发人员定制代码。

我正在考虑有一个默认情况下为空的文件夹(即“自定义”)的可能性,当开发人员需要从现有的asp页面或新页面自定义任何代码时,他们只需要将它们放入进入文件夹,它将工作。例如:

让核心文件夹存储默认的asp页面。

core\customer\createCustomer.asp <-- the default page

当开发人员想要覆盖该页面时,他需要将该asp页面复制到自定义文件夹,例如

custom\customer\createCustomer.asp <-- modified asp page

应用程序将自动加载自定义文件夹中的文件夹,而不是核心文件夹中的文件夹。

这在C#中是否可行?

2 个答案:

答案 0 :(得分:0)

您可以使用VirtualPathProvider加载与“实际请求的文件”不同的文件。这也适用于IIS和缓存。

基本上,您继承了VirtualPathProvider并覆盖了FileExistsGetFileDirectoryExistsGetDirectory方法(链接页面中有一个示例)。然后,在AppInitialize中,使用

注册提供程序
HostingEnvironment.RegisterVirtualPathProvider(sampleProvider);

顺便说一句,不要忘记拥有一个不同的(不可编辑的)页面,这样用户就可以恢复所做的任何更改,以便恢复潜在的misedit。我可能有一个简单的版本控制系统,每当用户进行更改时都使用commit,并允许用户恢复到之前的变更集。

答案 1 :(得分:0)

This MSDN article解释了如何使用IHttpModule实现来拦截HTTP请求并执行自定义操作(他们指出了日志记录,但由于您正在拦截请求,因此您可能会获取一些不同的内容,例如你的“定制”代码。