1

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

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

可以说核心文件夹存储默认的asp页面。

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

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

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

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

这在 C# 中可行吗?

4

2 回答 2

0

这篇 MSDN 文章解释了如何使用IHttpModule实现来拦截 HTTP 请求并执行自定义操作(它们指出了日志记录,但是由于您正在拦截请求,因此您不妨获取一些不同的内容,例如您的“自定义”代码)。

于 2012-10-08T07:47:57.380 回答
0

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

基本上,您继承VirtualPathProvider并覆盖FileExists,GetFileDirectoryExists,GetDirectory方法(链接页面中有一个示例)。然后,在您的 AppInitialize 中,注册提供程序

HostingEnvironment.RegisterVirtualPathProvider(sampleProvider);

顺便说一句,不要忘记有一个不同的(不可编辑的)页面,以便用户可以恢复所做的任何更改,以恢复可以说的潜在错误编辑。我可能会有一个简单的版本控制系统,并在用户进行更改时使用提交,并允许用户恢复到以前的变更集。

于 2012-10-08T07:39:10.613 回答