1

我正在尝试InterceptionMVC应用程序中使用。我遇到的问题是控制器。因为控制器在Unity容器中注册,并且没有接口,所以我收到错误消息。我想我需要一种方法将控制器从Interception流程中排除,或者我可以做其他事情吗?这是可能的还是可行的?我问了一个关于 SO 的类似问题,根据我收到的评论,我觉得最好再提出一个问题。

这是错误:

异常信息:异常类型:ResolutionFailedException 异常消息:依赖解析失败,类型=“CSR.Presentation.Controllers.HomeController”,名称=“(无)”。发生异常时:调用构造函数 Microsoft.Practices.Unity.InterceptionExtension.PolicyInjectionBehavior(Microsoft.Practices.Unity.InterceptionExtension.CurrentInterceptionRequest interceptionRequest,Microsoft.Practices.Unity.InterceptionExtension.InjectionPolicy[] 策略,Microsoft.Practices.Unity.IUnityContainer 容器)。例外是:ArgumentException - 传递的类型必须是接口。

这是代码;

// FIRST
   container.RegisterTypes(
       AllClasses.FromLoadedAssemblies(), 
       WithMappings.FromMatchingInterface, 
       WithName.Default,
       WithLifetime.ContainerControlled,
         t => new InjectionMember[] { 
            new Interceptor<InterfaceInterceptor>(),
            new InterceptionBehavior<PolicyInjectionBehavior>()});

// SECOND
   container.AddNewExtension<Interception>();

// THIRD    
   var first = new InjectionProperty("Order", 1);
   var second = new InjectionProperty("Order", 2);

   container.Configure<Interception>()
       .AddPolicy("logging")
       .AddMatchingRule<NamespaceMatchingRule>(
            new InjectionConstructor(
            new InjectionParameter("CSR.*")))             
       .AddCallHandler<LoggingCallHandler>(
            new ContainerControlledLifetimeManager(),
            new InjectionConstructor(),
            first);

// Controller ==> execution doesn't reach here using interception
 public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View("Index");
        }        
    }
4

0 回答 0