我们正在对我们的应用程序进行重组,目前的想法是将代码分解为核心库代码+为我们的开发人员定制代码。
我正在考虑有一个默认情况下为空的文件夹(即“自定义”)的可能性,当开发人员需要从现有的asp页面或新页面自定义任何代码时,他们只需要将它们放入进入文件夹,它将工作。例如:
让核心文件夹存储默认的asp页面。
core\customer\createCustomer.asp <-- the default page
当开发人员想要覆盖该页面时,他需要将该asp页面复制到自定义文件夹,例如
custom\customer\createCustomer.asp <-- modified asp page
应用程序将自动加载自定义文件夹中的文件夹,而不是核心文件夹中的文件夹。
这在C#中是否可行?
答案 0 :(得分:0)
您可以使用VirtualPathProvider加载与“实际请求的文件”不同的文件。这也适用于IIS和缓存。
基本上,您继承了VirtualPathProvider
并覆盖了FileExists
,GetFile
和DirectoryExists
,GetDirectory
方法(链接页面中有一个示例)。然后,在AppInitialize中,使用
HostingEnvironment.RegisterVirtualPathProvider(sampleProvider);
顺便说一句,不要忘记拥有一个不同的(不可编辑的)页面,这样用户就可以恢复所做的任何更改,以便恢复潜在的misedit。我可能有一个简单的版本控制系统,每当用户进行更改时都使用commit,并允许用户恢复到之前的变更集。
答案 1 :(得分:0)
This MSDN article解释了如何使用IHttpModule
实现来拦截HTTP请求并执行自定义操作(他们指出了日志记录,但由于您正在拦截请求,因此您可能会获取一些不同的内容,例如你的“定制”代码。