您能否以编程方式定义ASP.NET配置?
是否可以在代码中定义ASP.NET应用程序的大部分(如果不是全部)web.config?如果是,怎么做?您会使用IHTTP模块吗?同样,您能否在所述模块中解析IHttpHandler以处理所有传入请求 编辑1:最后一位是由您能否以编程方式定义ASP.NET配置?,.net,asp.net,ihttphandler,ihttpmodule,.net,Asp.net,Ihttphandler,Ihttpmodule,是否可以在代码中定义ASP.NET应用程序的大部分(如果不是全部)web.config?如果是,怎么做?您会使用IHTTP模块吗?同样,您能否在所述模块中解析IHttpHandler以处理所有传入请求 编辑1:最后一位是由 编辑2:我真正想做的是在代码中添加/删除模块和处理程序,而不是web.config。我可能至少需要在web.config中设置一个模块来实现这一点。然后我可以注册其他模块和处理程序吗?我只是在探索可能性。您可以在运行时更改它。此处概述了说明和可能的陷阱: 我见过几个web应用
编辑2:我真正想做的是在代码中添加/删除模块和处理程序,而不是web.config。我可能至少需要在web.config中设置一个模块来实现这一点。然后我可以注册其他模块和处理程序吗?我只是在探索可能性。您可以在运行时更改它。此处概述了说明和可能的陷阱: 我见过几个web应用程序在安装或维护过程中修改配置。(DotNetNuke在安装期间执行此操作,而AspDotNetStorefront作为配置向导的一部分更改多个设置。)
但请记住,每次更改web.config时,应用程序都需要重新编译,因此可能会很麻烦。您最好将设置保存在数据库中,并尽可能使用这些设置。更易于修改且中断更少。与修改配置相比,您可以在应用程序启动时使用PreApplicationStartupMethod在代码中注册HttpHandler。示例代码(来自):
另请参阅菲尔·哈克的帖子。大卫,谢谢你的回复。这可能是因为它解决了我想找出的问题。我已经更新了我的问题,使之更符合我的意图。
[assembly: PreApplicationStartMethod(typeof(UserTrackerModule), "Register")]
namespace DynamicWebApp.Sample {
public sealed class UserTrackerModule : IHttpModule {
#region Implementation of IHttpModule
void IHttpModule.Dispose() {
}
void IHttpModule.Init(HttpApplication application) {
application.PostAuthenticateRequest += delegate(object sender, EventArgs e) {
IPrincipal user = application.Context.User;
if (user.Identity.IsAuthenticated) {
DateTime activityDate = DateTime.UtcNow;
// TODO: Use user.Identity and activityDate to do
// some interesting tracking
}
};
}
#endregion
public static void Register() {
DynamicHttpApplication.RegisterModule(delegate(HttpApplication app) {
return new UserTrackerModule();
});
}
}
}