zoukankan      html  css  js  c++  java
  • Autofac.Integration.Mvc分析

    Autofac.Integration.Mvc

    static ILifetimeScope LifetimeScope
            {
                get { return (ILifetimeScope)HttpContext.Current.Items[typeof(ILifetimeScope)]; }
                set { HttpContext.Current.Items[typeof(ILifetimeScope)] = value; }
            }
    namespace Autofac.Integration.Mvc
    {
        /// <summary>
        /// An <see cref="IHttpModule"/> and <see cref="ILifetimeScopeProvider"/> implementation 
        /// that creates a nested lifetime scope for each HTTP request.
        /// </summary>
        internal class RequestLifetimeHttpModule : IHttpModule
        {
            /// <summary>
            /// Gets the lifetime scope provider that should be notified when a HTTP request ends.
            /// </summary>
            internal static ILifetimeScopeProvider LifetimeScopeProvider { get; private set; }
    
            /// <summary>
            /// Initializes a module and prepares it to handle requests.
            /// </summary>
            /// <param name="context">An <see cref="T:System.Web.HttpApplication"/> that provides access to the 
            /// methods, properties, and events common to all application objects within an ASP.NET application</param>
            /// <exception cref="System.ArgumentNullException">
            /// Thrown if <paramref name="context" /> is <see langword="null" />.
            /// </exception>
            public void Init(HttpApplication context)
            {
                if (context == null)
                {
                    throw new ArgumentNullException("context");
                }
                context.EndRequest += OnEndRequest;
            }
    
            /// <summary>
            /// Disposes of the resources (other than memory) used by the module that implements <see cref="T:System.Web.IHttpModule"/>.
            /// </summary>
            public void Dispose()
            {
            }
    
            public static void SetLifetimeScopeProvider(ILifetimeScopeProvider lifetimeScopeProvider)
            {
                if (lifetimeScopeProvider == null) throw new ArgumentNullException("lifetimeScopeProvider");
    
                LifetimeScopeProvider = lifetimeScopeProvider;
            }
    
            static void OnEndRequest(object sender, EventArgs e)
            {
                if (LifetimeScopeProvider != null)
                    LifetimeScopeProvider.EndLifetimeScope();
            }
        }
    }
    using System.ComponentModel;
    using Microsoft.Web.Infrastructure.DynamicModuleHelper;
    
    namespace Autofac.Integration.Mvc
    {
        /// <summary>
        /// Container class for the ASP.NET application startup method.
        /// </summary>
        [EditorBrowsable(EditorBrowsableState.Never)]
        public static class PreApplicationStartCode
        {
            private static bool _startWasCalled;
    
            /// <summary>
            /// Performs ASP.NET application startup logic early in the pipeline.
            /// </summary>
            public static void Start()
            {
                // Guard against multiple calls. All Start calls are made on the same thread, so no lock needed here.
                if (_startWasCalled) return;
    
                _startWasCalled = true;
                DynamicModuleUtility.RegisterModule(typeof(RequestLifetimeHttpModule));
            }
        }
    }
  • 相关阅读:
    Mybatis的分页查询
    Mybatis的动态标签
    mybatis include标签
    mybatis 的<![CDATA[ ]]>
    Mybatis 示例之 SelectKey(转)
    mybatis foreach标签
    加密解密
    Sensor传感器(摇一摇)
    二维码的生成和扫描
    Camera摄像头
  • 原文地址:https://www.cnblogs.com/shiningrise/p/5568879.html
Copyright © 2011-2022 走看看