问题标签 [structuremap3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc - Setter 注入不适用于 ASP.NET MVC 授权过滤器中的 StructureMap
我们使用自定义AuthorizeAttribute
来处理用户授权的几个方面。我需要添加对数据库的访问权限以在授权期间检查值。该项目使用 Repository 模式,并且 Repos 都通过 StructureMap 在控制器构造函数中实例化。
不幸的是,似乎没有办法将构造函数注入与过滤器一起使用。我找到了 Jimmy Bogard 的一篇文章(http://lostechies.com/jimmybogard/2010/05/03/dependency-injection-in-asp-net-mvc-filters/),解释了如何使用属性注入来处理这种情况。基本上,Jimmy 的代码会拦截其中的GetFilters
方法ControllerActionInvoker
并BuildUp
在每个过滤器上运行以填充属性。这正是我所需要的,所以我添加了以下课程 -
然后用这些线将它连接到 StructureMap -
最后,我将公共属性添加到我的自定义AuthorizeAttribute
类中 -
当我运行项目并访问安全页面时,AuthorizeCore
代码被命中两次。第一次,我的财产已设置并正常工作。但是,第二次调用失败,因为属性为 null。我在方法中设置了一个断点GetFilters
,它只是第一次被击中。不幸的是,我只是对 StructureMap 或 Filters 的理解不够深入,无法确切地知道它的横向发展。
以下是调用堆栈,以防对任何人有用 -
呼叫#1
呼叫#2
任何 StructureMap 大师愿意分享一些智慧吗?提前感谢您的帮助!
编辑:这是_Menu.cshtml
文件的代码 -
感谢 NightOwl888 的一些提示,我已将问题隔离到 Kendo Menu 调用。如果我在最后一行设置断点_Menu.cshtml
并进入,我会看到为我的 HomeController 调用了 DoGetInstance。一旦完成,第二次触发 OnAuthorization 并且我的 repo 属性为空。
有人知道我在这里缺少什么吗?
structuremap - 请求的插件类型没有默认实例或命名实例“默认”
我试图避免在我的主项目中引用具体类型库,但我收到了这个错误:
我已经设置我的容器来扫描程序集,如下所示:
当我尝试获取实例时,我得到了错误,我获取实例的代码在这里:
如果我将具体类显式映射到接口,一切正常,但这意味着我需要引用其中的项目,Client
我不想这样做。
structuremap - 为什么懒惰和功能依赖关系在 StructureMap 中实现相同
我注意到,在创建昂贵对象的示例中,StructureMap 可以使用 Lazy 或 Func 类型延迟创建接口。
例如
我知道使用 Lazy 时, value 属性是创建昂贵对象的单点。
StructureMap 是在这里做一些特别的事情,还是只是使用 .NET 中已有的功能?
这与 Func 的工作方式有什么关系,因为这与惰性创建无关?
c# - 如何在 Structuremap 中使用自动注册和类型扫描
在我的解决方案中,我有三个这样的项目。
我将 Common.dll 和 Service.dll 复制到 d:\libs 之类的文件夹中,并使用下面的代码进行类型扫描
当我想从 IPerson 获取实例时初始化我的依赖项后,我收到此错误
{"未注册默认实例且无法自动确定类型 'Common.IPersonService'\r\n\r\n没有为 Common.IPersonService 指定配置\r\n\r\n1.) Container.GetInstance(Common .IPersonService)\r\n"}
asp.net-mvc - 如何在 ASP.NET MVC5 中配置 structuremap.MVC 5 以忽略框架接口/类实例
结构映射方法,scan.WithDefaultConventions(); 在 structuremap.MVC 5 中假设约定 IMyClassName , MyClassName 用于依赖注入。如果您只有自己创建的类,这没关系。
使用开箱即用的 ASP.NET MVC 5 应用程序,约定 IMyClassName , MyClassName 不会以用户身份退出。如何配置结构映射以忽略 ASP.NET Framework 接口/类?
c# - 使用 StructureMap 3 时将对象传递给构造函数
UserControl
我的 c# 项目中有一些s 并Structuremap 3
用作我的 IoC 容器,当我想访问UserControl
s 时,我使用以下代码:
这是UserControlFactory
代码:
当我有一些interface
s 作为我UserControl
的 s 构造函数参数时,它工作正常:
但现在我想通过UserControl
构造函数传递一个对象:
我怎样才能做到这一点?
c# - Structuremap 3 多重修饰
我正在尝试使用装饰器链在 StructureMap 3 中创建依赖关系图:
每个实例都有一个带有多个参数的构造函数,但恰好是内部 IGeocoder 的一个参数,例如
我像这样连接它们:
但我明白了
检测到双向依赖关系!检查下面的 StructureMap 堆栈跟踪:
1.) SOAM.Services.IGeoCoder 的实例 (SOAM.Services.Geocoding.RedisCachingGeocoder)
2.) new RedisCachingGeocoder( IDatabase的默认值,IGeoCoder的默认值)
3.) SOAM.Services.Geocoding.RedisCachingGeocoder
4 .) SOAM.Services.IGeoCoder 的实例 (SOAM.Services.Geocoding.RedisCachingGeocoder)
5.) new HomeController( IGeoCoder 的默认值,IAalertService的默认值)
6.) SOAM.Web.Controllers.HomeController
7.) SOAM.Web 的实例.Controllers.HomeController
8.) Container.GetInstance(SOAM.Web.Controllers.HomeController)
任何想法如何解决这个问题?
structuremap - 如何在 StructureMap 3 中调用 HybridHttpOrThreadLocalScoped
我正在尝试从 Structuremap 2.6.4.1 迁移到 3.1.4.143,但无法弄清楚如何处理 HybridHttpOrThreadLocalScoped。没有一个 SO Q/AI 可以找到似乎对我有用......
我有以下代码:
这给了我这个错误:
是否有调用 HybridHttpOrThreadLocalScoped 的新方法?
提前谢谢!
c# - 同时读取请求的 ServiceStack Redis 问题
我正在使用 ServiceStack.Redis 实现来缓存通过 Web API 接口传递的事件。这些事件应该被插入缓存并在一段时间后自动删除(例如 3 天):
StructureMap 3 注册表如下所示:
第一个场景是检索所有缓存的事件(数百个)并通过 ODataV3 和 ODataV4 将其传递到 Excel PowerTools 以进行可视化。这按预期工作:
但我正在努力解决的是 Excel PowerQuery 所做的 OData 过滤。我知道我还没有进行任何服务器端过滤,但这并不重要。当我过滤任何属性并单击刷新时,PowerQuery 会同时发送多个请求(我看到最多三个)。我相信它首先获取整个数据集,然后使用过滤器执行以下请求。这会导致 ServiceStack.Redis 出现各种异常:
附加信息,如:
或者
或者
或者
所有这些异常都发生在_eventsCache.GetAll()
.
一定有什么我错过了。我确信 Redis 能够在同一个集合上“同时”处理大量请求,但显然我做错了。:)
顺便说一句:Redis 2.8.12 正在 Windows Server 2008 机器上运行(很快 2012 年)。
感谢您的任何建议!
c# - StructureMap:将参数传递给选定的构造函数
我的 StructureMap 配置如下所示:
我正在尝试获取一个实例FileStreamWrap
并传入两个参数:
但是我收到此消息的异常,我不知道为什么 StructureMap 仍然选择具有最多参数的构造函数,因为我明确告诉它使用带有两个参数的构造函数(FileStreamWrap(string path, System.IO.FileMode mode)
)
任何建议将不胜感激。