2012-04-12 33 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; } 
    } 
} 

的問題是:調用句柄是從來沒有發射
我在做什麼錯了?

回答