asp.net – Application_Start和Application_OnStart之间的区别
|
我正在将ASP.NET MVC代码添加到预先存在的ASP.NET Webforms项目中。 various tutorials建议将路由添加到Global.asax中从Application_Start()调用的方法。我的Global.asax已经有一个Application_OnStart(Object,EventArgs)方法与一些设置代码。 如果我尝试同时拥有Start和OnStart,OnStart不会被调用(并且安装失败,导致错误)。它看起来像我必须选择一个或另一个。 我的问题是:我应该使用哪一个?它们之间有什么区别?他们在不同的时间被叫? (注意:在写这篇文章的时候,top three Google的命中是无用的和/或误导性的。我希望Stack Overflow可以解决这个问题。) 解决方法在经典(传统)ASP中,有一些特殊函数名称,如果在global.asa文件中定义,将在应用程序生命周期中的指定点运行。这些定义为:> Application_OnStart – 运行一次,当您的应用程序接收第一个HTTP请求并且在处理任何.ASP文件之前。 这些基本上是硬连接到经典的ASP运行时 – 你不能改变它们,你不能附加任何其他方法到这些事件。 在ASP.NET中,有一个名为AutoEventWireup的东西,它使用反射来查找符合特定命名约定的方法,并运行这些方法来响应ASP.NET运行时引发的匹配事件。最常见的例子是Page_Load方法,它会在页面生命周期内触发Load事件时自动调用。 相同的技术用于将处理程序附加到应用程序级生命周期事件。它将查找名为ModuleName_EventName或ModuleName_OnEventName的方法,不带参数()或(object sender,EventArgs e) 这里是有趣的部分 – 如果您定义多个匹配方法,只有文件中最新出现的一个将执行。 (最后的方法赢了,基本上) 所以如果你的global.asax.cs看起来像这样: public class Global : System.Web.HttpApplication {
protected void Application_Start() {
Debug.WriteLine("A: Application_Start()");
}
protected void Application_Start(object sender,EventArgs e) {
Debug.WriteLine("B: Application_Start(object sender,EventArgs e)");
}
protected void Application_OnStart() {
Debug.WriteLine("C: Application_OnStart()");
}
protected void Application_OnStart(object sender,EventArgs e) {
Debug.WriteLine("D: Application_OnStart(object sender,EventArgs e)");
}
}
您将在调试输出中看到消息D;如果您注释掉该块中的最后一个方法,您将看到消息C。 所以 – 使用任何你喜欢的命名约定,但如果你定义多个,只有在你的源文件中最后出现的那个将被执行。我个人坚持Application_Start(对象发送者,EventArgs e),因为这是Visual Studio项目模板和大多数.NET设计/编码工具生成的签名。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ‘System.Web.Webpages.Html.Htmlhelper’不
- asp.net-mvc – 隐藏日期时间的ASP.NET MVC格式
- asp.net – Orchard – 从主题布局中获取内容的标题
- asp.net-mvc – ASP.NET MVC:CSS文件存在时返回302错误
- asp.net-mvc-3 – 如何挂钩错误的jQuery验证不引人注目的MV
- asp.net – MiniProfiler.Stop()上的MVC Mini Profiler异常
- asp.net-mvc-3 – 在MVC3中使用Html.LabelFor的表单标签中的
- asp.net-mvc – 实现IModelBinder的最佳实践
- 如何在asp.net webforms捆绑中将cdN添加到bundle.config
- asp.net – 在与页面相同的文件夹中使用用户控件
- ASP.NET Core Web API模板中没有单独的用户帐户a
- asp.net – 如何在EF DbContext和AspNet Members
- asp.net – asp:ContentPlaceHolder和代码块问题
- asp.net-mvc – 将隐藏文本字段附加到表单MVC
- asp.net-mvc – Asp.Net MVC和HTML5 PUSH通知
- asp.net-mvc – 在MVC Web应用程序中的存储库中共
- asp.net – WebForms中的强类型容器
- asp.net – 当通过文件上传控件上传文件时,在c#.
- asp.net-mvc-3 – Html.Action – 获取与发布
- asp.net-mvc-3 – 在仅HTTPS站点上对HTTP HEAD请
