Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
您能否以编程方式定义ASP.NET配置?_.net_Asp.net_Ihttphandler_Ihttpmodule - Fatal编程技术网

您能否以编程方式定义ASP.NET配置?

您能否以编程方式定义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应用

是否可以在代码中定义ASP.NET应用程序的大部分(如果不是全部)web.config?如果是,怎么做?您会使用IHTTP模块吗?同样,您能否在所述模块中解析IHttpHandler以处理所有传入请求

编辑1:最后一位是由


编辑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();
            });
        }
    }
}