Asp.net mvc 4 在MVC筛选器中设置IBus属性
我正在尝试从MVC4项目中的筛选器向命令处理器发送命令 问题:Asp.net mvc 4 在MVC筛选器中设置IBus属性,asp.net-mvc-4,aop,structuremap,nservicebus,nservicebus3,Asp.net Mvc 4,Aop,Structuremap,Nservicebus,Nservicebus3,我正在尝试从MVC4项目中的筛选器向命令处理器发送命令 问题: 我无法在筛选器中获取要填充的NServiceBus实例 组成部分: ASP.NETMVC4 NServiceBus版本3 结构图 属性/过滤器: namespace AMS.WebApp.Filters { public class AMSAuthorizeAttribute : AuthorizeAttribute { public IBus Bus { get; set; }
我无法在筛选器中获取要填充的NServiceBus实例 组成部分:
- ASP.NETMVC4
- NServiceBus版本3
- 结构图
namespace AMS.WebApp.Filters
{
public class AMSAuthorizeAttribute : AuthorizeAttribute
{
public IBus Bus { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
bool accessGranted = false;
accessGranted = base.AuthorizeCore(httpContext);
// arbitrary command, don't worry about it
// Why is Bus still null?
var requestAccess = new RequestingAccess();
Bus.Send("AMS.AccessControl.CommandProcessor", requestAccess);
//if(isAdmin)
// accessGranted = true;
#if DEBUG
accessGranted = true;
#endif
return accessGranted;
}
}
}
国际奥委会守则:
using AMS.WebApp.Filters;
using NServiceBus;
using StructureMap;
namespace AMS.WebApp.DependencyResolution {
public static class IoC {
public static IContainer Initialize() {
ObjectFactory.Initialize(x =>
{
x.Scan(scan =>
{
scan.AssembliesFromApplicationBaseDirectory();
scan.WithDefaultConventions();
});
//This doesn't work
//x.SetAllProperties(y => y.OfType<IBus>());
//Neither does this
//x.ForConcreteType<AMSAuthorizeAttribute>()
// .Configure
// .Setter<IBus>(a => a.Bus)
// .IsTheDefault();
});
return ObjectFactory.Container;
}
}
}
在这一点上,我很确定属性/过滤器和structuremap有些尴尬,但我不确定这是什么
警告:接受的答案并不能解决在操作筛选器中获取nservicebus的实际问题,但它确实解决了如何在操作筛选器中获取DI的问题。有关Nservicebus特定的问题,请参阅,请参阅本帖。我想这就是你要找的 编辑: 我想你们有两个不同的问题
Configure.With().StructureMapBuilder()有趣的是,我认为这可以做到。明天上班时我会试试,如果有用的话,我会记下答案。谢谢这适用于我创建的一个示例项目。我删除了文章中的内容,setter注入不起作用,添加它,setter注入就起作用了。不幸的是,NServiceBus与额外的配置相匹配:StructureMap异常代码:202没有为PluginFamily NServiceBus.Unicast.Subscriptions.ISubscriptionStorage定义默认实例,NServiceBus.Core,Version=3.3.0.0,Culture=neutral,PublicKeyToken=9fc386479f8a226cAs John在下面陈述,确保明确告知NServiceBus使用StructureMap。从您的代码中,我看不到正在执行此步骤。如果您跳过这一步,NSB将使用它的默认值,我认为是AutoFac。这可以解释为什么StructureMap找不到NServiceBus接口。
An object reference is required for the non-static field, method, or property