2012-04-12 42 views
0

我试图使用添加通过AOP在ASP.NET MVC应用登录:
记录与EntLib政策注入阻止+ StructureMap + log4net的

  • 企业库策略注入应用程序块
  • StructureMap
  • log4net的

这是什么我有:

的web.config

<configSections> 
    <section name="policyInjection" type="Microsoft.Practices.EnterpriseLibrary.PolicyInjection.Configuration.PolicyInjectionSettings, Microsoft.Practices.EnterpriseLibrary.PolicyInjection, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" /> 
    </configSections> 

    <policyInjection> 
    <policies> 
     <add name="Policy"> 
     <matchingRules> 
      <add type="Microsoft.Practices.EnterpriseLibrary.PolicyInjection.MatchingRules.TagAttributeMatchingRule, Microsoft.Practices.EnterpriseLibrary.PolicyInjection, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
      match="Log" name="Tag Attribute Matching Rule" /> 
     </matchingRules> 
     <handlers> 
      <add type="MyApp.Website.MyLoggingCallHandler, MyApp.Website, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" 
      name="Custom Handler" /> 
     </handlers> 
     </add> 
    </policies> 
    </policyInjection> 

引导程序:

ControllerBuilder.Current.SetControllerFactory(new StructureMapControllerFactory()); 

StructureMapControllerFactory:

public class StructureMapControllerFactory : DefaultControllerFactory 
{ 
    protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType) 
    { 
    var instance = ObjectFactory.GetInstance(controllerType); 
    return PolicyInjection.Wrap<IController>(instance); 
    } 
} 

控制器:

[Tag("Log")] 
public class HomeController : Controller 
{ 
    //Implementation 
} 

MyLoggingCallHandler:

namespace MyApp.Website 
{ 
    [ConfigurationElementType(typeof(CustomCallHandlerData))] 
    public class MyLoggingCallHandler : ICallHandler 
    { 
     public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext) 
     { 
      //Implementation 
     } 

     public int Order { get; set; } 
    } 
} 

的问题是:调用句柄是从来没有发射
我在做什么错了?

回答