0

我正在使用 umbraco v 4.7.1(程序集版本:1.0.4281.20201)并且有一个项目,我必须在其中扩展 global.asax 文件。

请不要以下

这是我的实现,

using Project.Umbraco.DependencyInjection;
using Project.Umbraco.IoC;
using Microsoft.Practices.Unity;
using System;
using System.Diagnostics;
using umbraco;

namespace Project.Umbraco.App_Start
{
    public class MyGlobal : Global, IContainerAccessor
    {
        /// 

        /// Returns the IoC container
        /// IContainerAccessor
        /// 

        public IUnityContainer Container
        {
            get
            {
                return MvcUnityContainer.Instance.Container;
            }
        }

        protected override void Application_Start(object sender, EventArgs e)
        {
            base.Application_Start(sender, e);
            Debug.WriteLine("Application start");
        }

        protected override void Application_BeginRequest(object sender, EventArgs e)
        {
            base.Application_BeginRequest(sender, e);
            Debug.WriteLine("Application start");
        }
        //protected void Session_Start(object sender, EventArgs e) {}
        //protected void Application_AuthenticateRequest(object sender, EventArgs e) {}
        //protected void Application_Error(object sender, EventArgs e) {}
        //protected void Session_End(object sender, EventArgs e) {}
        //protected void Application_End(object sender, EventArgs e) {}
    }
}

该实现似乎应该可以工作,也许我只是将它放在错误的名称空间或其他什么地方?

谢谢你的帮助

4

1 回答 1

2

从 Umbraco 4.8.0 起,不再需要 App_global.asax.dll,因此您可能需要考虑升级到更新的版本。

不过在 4.7 中,您可以通过创建一个看起来有点像这样的类来简单地使用 PreApplicationStart 方法:

using System.Linq;
using System.Web.Routing;
using System.Web.Http;
using CustomerName.Extensions;

[assembly: System.Web.PreApplicationStartMethod(typeof(AppStart), "PreStart")]
namespace CustomerName.Extensions
{
    public static class AppStart
    {
        public static void PreStart()
        {
            RouteTable.Routes.MapHttpRoute(
               name: "DefaultApi",
               routeTemplate: "api/{controller}/{id}",
               defaults: new { id = RouteParameter.Optional }
           );
        }
    }
}

当然,您可以插入 DI 代码,而不是定义 WebAPI 路由。

于 2012-09-09T17:18:39.823 回答