问题标签 [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.

0 投票
3 回答
11439 浏览

dependency-injection - 如何在 StructureMap 3 中替换 ObjectFactory 的使用

目前我们使用 StructureMap v2.6 进行依赖注入,我们的设置是这样的:

在 Application_Start 我们有:

Initialize 方法是这样实现的:

在我们的代码中,我们有几个地方使用ObjectFactory.GetInstance<IFoo>()而不是使用构造函数注入。对于 StructureMap v3,这已被标记为过时,所以我的问题是我们如何使用最新版本实现相同的目标。

0 投票
1 回答
406 浏览

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 指定配置

谁能建议我解决上述问题的最佳方法?

0 投票
0 回答
427 浏览

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

https://ovaismehboob.wordpress.com/2013/10/28/loading-web-api-controllers-from-other-libraries-when-self-hosting-web-api/

哪个工作正常,除了 WebAPI 项目使用 StructureMap.MVC5 并且我不知道如何引导它?

这不起作用:

0 投票
0 回答
159 浏览

c# - Structuremap 版本 3,IEnumerable 的构造函数注入不工作

我有一些类型,例如ParentClassAand ParentClassB,它们的构造函数具有参数,IEumerable<IType>,如下面的代码所示。

现在在 Structuremap 注册表中,(Structuremap dll 的版本是 3.1.5.0)我想根据上下文设置枚举,这意味着基于正在创建的父对象,例如,

但是当我运行应用程序时(它构建得很好),在 ParentClassA 等的构造函数中,我只能看到一个空列表被传递,但我期待的是 function 的返回列表ff

请建议。谢谢。

0 投票
1 回答
1009 浏览

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 后访问'

如果我使用SingletonorThreadLocalStorageLifecycle范围,Datacontext它工作正常。但我想将DataContext对象范围限定为 Per Http Request。

如何将Datacontext对象范围限定为每个 Http 请求?

我参考了以下文章,但它不适用于HttpContextLifeCycle

http://ignipro.blogspot.in/2012/09/structuremap-scopes-and-life-cycles.html

0 投票
1 回答
1546 浏览

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)

0 投票
0 回答
691 浏览

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 中发生了什么变化会导致这个问题。

0 投票
1 回答
300 浏览

c# - 对于未注册的具体类型,默认为始终唯一

考虑这段代码

我不想注册每个可以注入的具体类型,但我希望它们对于每个构造函数注入或调用都是唯一的GetInstance

更新:

嗯,我一定是用错了 NestedContainers?我想做的是为程序的子部分创建一个“子”容器(它是一个 WPF 客户端,因此子部分可以是一个子模型,如弹出窗口或其他)。子模型可以有自己的子模型或服务,它们可以是具体的且未注册的,也可以是已注册的 intarfaced。我根本不想注册的具体类型。我想默认使用 Structuremap 称为 AlwaysUnique 的接口,但在我的世界里,这就是瞬态生命周期。对于 99.9% 的类型,我想要 AlwaysUnique,0.01% 我想要在嵌套容器的生命周期内使用相同的引用。也许这个用例不适用于嵌套容器?

编辑:一个典型的用例是事件聚合仅在程序的一部分中,如弹出模型及其子项

0 投票
1 回答
1366 浏览

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) 我该如何解决这个问题?

谢谢。

0 投票
2 回答
3813 浏览

c# - 在 DbContext 中访问 HttpContext.Current.User.Identity.Name

我将使用 UserName 来跟踪 Created 和 Modified 字段。为此,我直接在 DbContext 中引用了 System.Web 程序集:

它可以工作,但是它将 DbContext 与 HttpContext 紧密耦合,如果我们将 DbContext 暴露给非 Web 环境,这不是一个好主意。所以我用这种方式:

在 Ioc 配置项目中(我在另一个类库中使用 structureMap):

但是当我运行应用程序时,我会在上面的行中得到这个错误:

好像不能注入HttpContext。

任何想法?