问题标签 [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.
dependency-injection - 如何在 StructureMap 3 中替换 ObjectFactory 的使用
目前我们使用 StructureMap v2.6 进行依赖注入,我们的设置是这样的:
在 Application_Start 我们有:
Initialize 方法是这样实现的:
在我们的代码中,我们有几个地方使用ObjectFactory.GetInstance<IFoo>()
而不是使用构造函数注入。对于 StructureMap v3,这已被标记为过时,所以我的问题是我们如何使用最新版本实现相同的目标。
asp.net-web-api2 - 如何使用 StructureMap.WebApi2 nuget 包在 Web API 2 中注入 UrlHelper
我正在为 Web API 2 项目使用 StructureMap.WebApi2 nuget 包来管理依赖注入。Web API 控制器使用构造函数注入来注入 UrlHelper 依赖项,该依赖项应由 StructureMap Ioc 解决。我正在尝试以下方法来设置 Web api 控制器的 UrlHelper:
但是使用上面的代码,我收到以下错误:
没有注册默认实例,无法自动确定类型“System.Net.Http.HttpMethod”没有为 System.Net.Http.HttpMethod 指定配置
谁能建议我解决上述问题的最佳方法?
asp.net-mvc - 来自 OWIN 自托管 WepAPI2 的 Bootstrap StructureMap.WebApi2
我有一个 WebAPI 项目,我从集成测试套件项目中自行托管,以便测试将按照这些说明设置和拆除正在进行的 WebAPI 应用程序
http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api
哪个工作正常,除了 WebAPI 项目使用 StructureMap.MVC5 并且我不知道如何引导它?
这不起作用:
c# - Structuremap 版本 3,IEnumerable 的构造函数注入不工作
我有一些类型,例如ParentClassA
and ParentClassB
,它们的构造函数具有参数,IEumerable<IType>,
如下面的代码所示。
现在在 Structuremap 注册表中,(Structuremap dll 的版本是 3.1.5.0)我想根据上下文设置枚举,这意味着基于正在创建的父对象,例如,
但是当我运行应用程序时(它构建得很好),在 ParentClassA 等的构造函数中,我只能看到一个空列表被传递,但我期待的是 function 的返回列表ff
。
请建议。谢谢。
entity-framework - 无法访问已释放的对象。\r\n对象名称: 'DataContext 在 Dispose 后访问'
我正在为 Web API 2 项目使用 StructureMap.WebApi2 nuget 包来管理依赖注入。在 DefaultRegistry.cs 类中,我提到了每个请求都使用嵌套容器所需的所有依赖项。
在先前版本的结构映射中,HttpContextScoped 可用,但在最新版本 3.0.0.0 中不再可用,因此我将 LifeCycle 设置为 HttpContextLifeCycle。
Linq to Sql Datacontext 对象正在处理,我收到以下错误:
无法访问已释放的对象。\r\n对象名称: 'DataContext 在 Dispose 后访问'
如果我使用Singleton
orThreadLocalStorageLifecycle
范围,Datacontext
它工作正常。但我想将DataContext
对象范围限定为 Per Http Request。
如何将Datacontext
对象范围限定为每个 Http 请求?
我参考了以下文章,但它不适用于HttpContextLifeCycle
:
http://ignipro.blogspot.in/2012/09/structuremap-scopes-and-life-cycles.html
c# - StructureMap 在 HttpContext 上抛出 ArgumentNullException
我有一个非常奇怪的问题StructureMap.MVC5
我在 Visual Studio 中创建了一个全新的 MVC5 项目(ASP.net MVC 项目的默认选项被选中。)
然后我通过 nuget 包管理器 ( Install-Package StructureMap.MVC
) 安装了 structuremap.mvc5。
然后我将以下代码添加到“HomeController.cs”文件的顶部:
然后我添加了一个构造函数和私有成员,如下所示:
最后,我更新了 About 动作结果如下:
项目编译并启动。我得到了正常的默认索引页面,但是在浏览器中返回页面后的 2 到 5 秒之间,我在return
此方法的行上的“StructureMapDependencyScope.cs”中抛出了一个异常:
给出的确切错误是:
检查,System.Web.HttpContext.Current
此时确实为空。
如果我停止并重新启动项目,则会发生相同的错误。
如果我按 F5 继续,则该网站将继续按预期运行。
但是,如果在按 F5 后,我稍等片刻,停止并重新启动项目,在我进行某种代码更改并重建之前,我不会再次收到错误!
这对我来说似乎零意义!
无论如何..任何帮助将不胜感激!
(如果有任何区别,请使用 VS2015 Enterprise RC)
asp.net-web-api - Owin、WebApi 2 和 Structuremap 3 抛出 Null HttpContext 异常
我正在尝试让 StructureMap 3 与在 OWIN 中自托管的 WebAPI 2 一起使用。有没有人成功地让这个工作?
我从 Nuget 安装了 StructureMap 3、WebAPI 2.2、Owin Self Host 和 StructureMap.WebApi2。然后在WebApi服务启动类中,我添加了以下内容:
但是,当应用程序启动时,当应用程序遇到上面代码示例中的最后一行代码时,我收到以下异常:
此外,由于 StructureMap.WebApi2 nuget 包创建了一个 App_Start 文件夹,其中包含通常在应用程序启动期间在 IIS 托管的 WebApi 应用程序中运行的代码,我还尝试将此代码复制/粘贴到启动类的 Configuration 方法中还有:
不幸的是,即使有这个额外的代码,我仍然会收到同样的错误。
我过去没有遇到过让 StructureMap 2 与 WebAPI 2 和 OWIN 一起工作的问题,所以我不确定 StructureMap 3 中发生了什么变化会导致这个问题。
c# - 对于未注册的具体类型,默认为始终唯一
考虑这段代码
我不想注册每个可以注入的具体类型,但我希望它们对于每个构造函数注入或调用都是唯一的GetInstance
更新:
嗯,我一定是用错了 NestedContainers?我想做的是为程序的子部分创建一个“子”容器(它是一个 WPF 客户端,因此子部分可以是一个子模型,如弹出窗口或其他)。子模型可以有自己的子模型或服务,它们可以是具体的且未注册的,也可以是已注册的 intarfaced。我根本不想注册的具体类型。我想默认使用 Structuremap 称为 AlwaysUnique 的接口,但在我的世界里,这就是瞬态生命周期。对于 99.9% 的类型,我想要 AlwaysUnique,0.01% 我想要在嵌套容器的生命周期内使用相同的引用。也许这个用例不适用于嵌套容器?
编辑:一个典型的用例是事件聚合仅在程序的一部分中,如弹出模型及其子项
asp.net-mvc - MVC5 和 OWIN facebook 身份验证提供程序在 IE11 和 Firefox 中不起作用(但在 Chrome 中起作用)
我正在使用 Asp.Net MVC 5 并利用 Microsoft 的 Identity (v2) 实现进行身份验证和外部 (facebook) 登录。
我的外部登录代码是这样的:
在 Startup.Auth.cs 我声明提供者:
在我发布 facebook 登录表单的 Controller 函数中,
并在我的基本控制器(我从中派生所有控制器)中使用它,我使用 owin OAuth:
然后我使用外部回调函数获取回调(正如我在上面的 ChallangeResult 对象中声明的那样):
另外值得注意的是,我正在使用 StructureMap 3.0 进行依赖注入,并且根据以下代码,它将任何控制器代码的生命周期限制为请求的生命周期。
现在,这一切运行良好,当我从 chrome 运行应用程序时,它确实为我处理了 facebook 登录。但是,当我使用 Internet Explorer(尝试 11)或 firefox 时,它会在 /{controller}/ExternalLogin 处出现黑屏,并且不会进行任何重定向。
如果这是 IOC 包含结构图的问题,我相信它也不应该在 chrome 上顺利运行。因此,我一直在网上搜索,但找不到解决方案 - 或任何有关正在发生的事情的迹象。而且由于我没有遇到任何异常或类似情况,因此我无法弄清楚我做错了什么。
总结一下:
- 我正在使用:ASP.NET MVC 5 + OWIN (v3.0.1) + Identity (v2) + StructureMap 3 + Facebook 登录
- 这一切都很好,并在 chrome 中完成了工作
- 不适用于 IE11 或 Firefox
- 我的问题是(1)为什么?(2) 我该如何解决这个问题?
谢谢。
c# - 在 DbContext 中访问 HttpContext.Current.User.Identity.Name
我将使用 UserName 来跟踪 Created 和 Modified 字段。为此,我直接在 DbContext 中引用了 System.Web 程序集:
它可以工作,但是它将 DbContext 与 HttpContext 紧密耦合,如果我们将 DbContext 暴露给非 Web 环境,这不是一个好主意。所以我用这种方式:
在 Ioc 配置项目中(我在另一个类库中使用 structureMap):
但是当我运行应用程序时,我会在上面的行中得到这个错误:
好像不能注入HttpContext。
任何想法?