asp.net - 在 Sitefinity 11.2 中不再使用 Global.Application_Start 吗?
问题描述
我application_start
在 Global.asax.cs 文件中的方法永远不会运行。
我可以在使用 11.2 项目管理器创建的库存 Sitefinity 站点中重现这一点。如果我使用 Visual Studio 向其中添加 Global.asax.cs 文件,我定义的事件将永远不会运行。
最终,我只是想在升级到 11.2 的项目中注册自定义配置类型。
从 9.2 升级到 11.2 后,Global.asax.cs 中的代码不再运行。我可以将简单的日志记录代码放入Application_Start
方法中,它永远不会被调用。我试过使用Debugger.Break()
,我试过手动断点,我试过 IIS 和 IISExpress。它们都不起作用。
我认为 Sitefinity 11.2 中的某些东西劫持了标准应用程序启动,因此它从不运行这种非常标准的方法,但我不知道为什么或如何规避这一点。
我发现很多年前有人问过这个问题:Global.asax not fire on precompiled Sitefinity project,但没有答案。
我尝试了这两条评论的建议,但它们不适用于我,因为这不是已部署的站点,它在我的开发环境中。
这是我的 Global.asax.cs:
using System;
using System.IO;
using System.Threading;
using Telerik.Microsoft.Practices.Unity;
using Telerik.Sitefinity.Abstractions;
using Telerik.Sitefinity.Configuration;
using SitefinityWebApp.Custom.Configuration;
namespace SitefinityWebApp
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
throw new Exception("I told you this wouldn't run.");
logStartUpCall(string.Concat("Application started at: ", DateTime.Now));
Bootstrapper.Bootstrapped += Bootstrapper_Bootstrapped;
Bootstrapper.Initialized += this.Bootstrapper_Initialized;
//log call
logStartUpCall(string.Concat("Call made to bootstrapper: ", DateTime.Now));
}
void Bootstrapper_Initialized(object sender, Telerik.Sitefinity.Data.ExecutedEventArgs e)
{
//log call
logStartUpCall(string.Concat("Bootstrapper_Initialized:", " ", DateTime.Now));
if (e.CommandName == "Bootstrapped")
{
ObjectFactory.Container.RegisterType<Telerik.Sitefinity.Workflow.IWorkflowDefinitionResolver, Nccer.Sitefinity.CustomWorkflowDefinitionResolver>();
System.Web.Mvc.RouteCollectionExtensions.MapRoute(System.Web.Routing.RouteTable.Routes,
"Classic",
"Redirect",
new { controller = "Redirect", action = "Index" });
Config.RegisterSection<MercuryConfiguration>();
}
//log call
logStartUpCall(string.Concat("Bootstrapper Configuration & Registration complete:", " ", DateTime.Now));
}
protected void Bootstrapper_Bootstrapped(object sender, EventArgs e)
{
logStartUpCall(string.Concat("Bootstrapper_Bootstrapped:", " ", DateTime.Now));
Nccer.Sitefinity.FeatherActionInvokerCustom.Register();
logStartUpCall(string.Concat("Bootstrapper_Bootstrapped finished:", " ", DateTime.Now));
}
protected void logStartUpCall(string message)
{
TextWriter tw = new StreamWriter(System.Web.Hosting.HostingEnvironment.MapPath("/App_Data/SiteFinity/Logs/Startup.log"), true);
// write a line of text to the file
tw.WriteLine(message);
// close the stream
tw.Close();
}
}
}
我希望application_start
调用该方法,但事实并非如此。未抛出异常,未完成日志记录,未注册模块。它就像它甚至不存在一样。
我一天中大部分时间都在为此工作,但我很茫然。
解决方案
推荐阅读
- javascript - 节点正在从客户端获取 [object Object]
- php - 如何从 2 个数据库中选择特定行
- django - django 模型列未出现在 AWS 上的 postgre db 中
- javascript - 使用 .map() 时出现 TypeError
- module - odoo12 网站/翻译不包括我的模块
- terraform - Terraform:aws_iam_policy_document 中的条件语句块?
- oracle - 从时间戳获取oracle中的日期而不使用尾随o?
- vbscript - 将 .vbs 文件单独分组,而不是一次全部分组
- python - 如何在 Python 中显示列表或双端队列的内容?
- c# - HtmlAgilityPack 中的 SelectNodes 始终返回 null