我正在创建一个 NuGet 包,想知道是否有办法修改目标网站的 Global.asax?我想在 Application_Start 中添加一行(如果不存在,则创建 Global.asax)。这可能吗?更新将如何工作?

最佳答案

推荐的方法是不要修改宿主应用程序的 Global.asax 文件。相反,您可以使用 WebActivator 并向项目添加一个单独的文件。以 Ninject.MVC3 NuGet 为例,它就是这样做的。

例如,当您安装 NuGet 时,您可以简单地将以下文件添加到项目 ~/App_Start/MyNuGetAppStart.cs 中:

[assembly: WebActivator.PreApplicationStartMethod(typeof(SomeNamespace.AppStart), "Start")]

namespace SomeNamespace
{

    public static class AppStart
    {
        /// <summary>
        /// Will run when the application is starting (same as Application_Start)
        /// </summary>
        public static void Start()
        {
            ... put your initialization code here
        }
    }
}

这是在应用程序启动时添加自定义代码的一种更加隐蔽的方式,而不是弄乱用户可能已经调整过的 Global.asax 文件。

关于c# - 通过 NuGet 包更改 Global.asax?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15168739/

10-10 20:15