问题标签 [tinyioc]

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 投票
1 回答
1132 浏览

c# - IOptions 不适用于 TinyIOC/NancyFX

我正在尝试在带有 / 的项目上实施选项模式(如此推荐),NancyFXTinyIOC它不起作用。

我正在Startup.cs.ConfigureServices方法上注册选项,但是当我尝试在我的类中注入设置时TinyIoc会抛出:

Nancy.TinyIoc.TinyIoCResolutionException:无法解析类型:AppSettings。

我认为这是因为选项模式使用Microsoft.Extensions.DependencyInjection但默认Nancy使用TinyIoc,因此TinyIoc尝试解决IOptions<AppSettings>并失败。

有没有办法使用IOptions<>with TinyIoc

这是我的代码:

启动.cs

我的服务.cs

错误:

应用程序启动异常:System.Reflection.TargetInvocationException:调用目标已引发异常。

System.InvalidOperationException:在组合过程中尝试满足其中一个依赖项时出现问题,请确保您已在容器中注册了所有新依赖项并检查内部异常以获取更多详细信息。

Nancy.TinyIoc.TinyIoCResolutionException:无法解析类型:Nancy.NancyEngine

Nancy.TinyIoc.TinyIoCResolutionException:无法解析类型:Nancy.Routing.DefaultRequestDispatcher

Nancy.TinyIoc.TinyIoCResolutionException:无法解析类型:Nancy.Routing.DefaultRouteResolver

Nancy.TinyIoc.TinyIoCResolutionException:无法解析类型:Nancy.Routing.RouteCache

Nancy.TinyIoc.TinyIoCResolutionException:无法解析类型:MyProject.MyService

Nancy.TinyIoc.TinyIoCResolutionException:无法解析类型:Microsoft.Extensions.OptionsModel.IOptions`1[[MyProject.AppSettings, MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]

一些额外的信息:

DNX 运行时版本:

非常感谢。

0 投票
1 回答
122 浏览

ioc-container - TinyIoC 中的会话范围实例

我需要一个类的实例,每个用户会话只创建一次。如何在 TinyIoC 注册这样的课程?我正在使用 NancyFx。

0 投票
1 回答
1459 浏览

c# - Nancy 依赖注入注册多个

我有一个模块,它期望满足一个依赖,但是我得到一个错误说明

在组合过程中尝试满足其中一个依赖项时出现问题,请确保您已在容器中注册了所有新依赖项并检查内部异常以获取更多详细信息。

我认为内部的例外是红鲱鱼:

无法解析类型:Nancy.Routing.DefaultRequestDispatcher 我相信我已经正确连接了它(见下文)。

0 投票
1 回答
102 浏览

unit-testing - Nancy 中的单元测试使用 TinyIoc 导致 Routebuilder 异常

获取 System.MissingMethodException,找不到方法:'Void RouteBuilder.set_Item()

从浏览器调用时运行良好,但在使用此设置进行测试时失败

任何线索为什么用于测试的 Routebuilder 不会选择这条路线?

0 投票
1 回答
2771 浏览

c# - EntityFramework DbContext 生命周期 + Postgres:“操作已在进行中。”

几天来,我一直在搞乱以下内容。

我有一个在 Mono 上运行的 Nancy 应用程序,带有带有 Repository 模式和 UnitOfWork 的 EntityFramework 以及 Postgres。Nancy 使用 TinyIoC 作为它的 IoC 容器。

我有一个 Web 应用程序,它在前端对请求进行排队,以便后端一次收到一个请求。这一切都很好。

但是,当我运行一个连接到同一后端的 iOS 应用程序并且没有将请求排队到后端时,问题就开始了,有时几乎同时触发请求。

后端以随机间隔开始抛出此错误:

我正在 Nancy 引导程序中注册依赖项:

我有一种感觉,这是一个多线程问题,并且两个单独的请求正在使用相同的 DbContext(或底层连接),这会导致事情崩溃。

我已经尝试在ConfigureRequestContainerNancy 引导程序的方法中注册依赖项,但这会引发“连接未打开”异常。

这个问题背后的理论在这篇文章中有清楚的解释:http: //mehdi.me/ambient-dbcontext-in-ef6/

以下是我不清楚的:

  • 我是否正确假设这是一个多线程问题?
  • 我需要知道正确的方法来确保每个请求都使用它自己的 DbContext/连接,这样东西就不会发生冲突,最好使用 TinyIoC/Nancy 来管理 DbContext 的生命周期。

我明白这是一个复杂的问题。如果您需要任何其他信息,请告诉我。

谢谢 :-)。

0 投票
0 回答
4948 浏览

c# - Nancy.TinyIoc.TinyIoCResolutionException:无法解析类型

我一直在尝试使用 JWT 在 dotnet 核心上使用 Nancy 获得无状态身份验证。我在 Ubuntu VM 上运行它。但我总是在我的 at中遇到cannot resolve type错误Startup.csx.UseNancy();

我的启动类如下所示:

我的 ConfigProvider 类:

RequiresStatelessAuth 扩展:

家庭模块:

我没有向 IoC 容器注册任何内容。但我在我的引导程序中尝试了以下内容:

为此,我更改IConfigurationRootConfigurationRoot跨应用程序。

无论我尝试过什么,我都会遇到同样的错误。堆栈跟踪:

我是 Nancy/Linux/dotnet core noob,有人可以解释如何解决这个问题吗?

编辑,工作代码:

引导程序更改:

启动.cs:

站点注释:我可能会更改ConfigurationStartup.cstype ConfigurationRoot,然后在 - 的构造函数中只进行一次类型转换,而不是像上面那样进行Startup.cs两次。Configure

0 投票
0 回答
49 浏览

c# - 未调用 ITinyIoCObjectLifetimeProvider 的 ReleaseObject

我已经实现了自定义生命周期提供程序,以便在 hangfire 中为每个作业提供单例 DB 上下文。下面代码中的问题是创建的实例没有被释放。

我的问题是:为什么ReleaseObject不调用方法?

0 投票
0 回答
224 浏览

c# - Nancy 和 TinyIoC 导致 Stackoverflow

我正在使用 Nancy 为 Quartz 开发一个简单的 REST api。我有一个简单的上下文类:

我正在将上下文实例注册到 TinyIoC 中,我相信这将是一个单例。没有这个,自宿主由于依赖问题而无法启动:

我正在使用这个类,它是一个 NancyModule

启动自托管服务器后,我得到一个 stackoverflow 异常 - 为什么?

0 投票
0 回答
120 浏览

c# - AsPerRequestSingleton() 创建的对象不会自动释放

我正在尝试在 NancyFX 中使用 TinyIOC 的依赖注入。

我打算做的是,每个请求都有一个 SqlConnection ,应该自动关闭。到目前为止,我所做的是创建一个 CustomBootstrapper,它覆盖 ConfigureRequestContainer 方法并将我的 IDbConnectionService 注册到 AsPerRequestSingleton() 方法。

这应该确保 SqlConnectionService 每个请求都存在,并且应该在请求之后被销毁。至少,这是我在阅读文档后认为应该做的。

自定义引导程序:

https://github.com/mschlechter/NancyFxTutorial/blob/master/NancyFxTutorial.Web/CustomBootstrapper.cs

和 SqlConnectionService:

https://github.com/mschlechter/NancyFxTutorial/blob/master/NancyFxTutorial.Web/Services/SqlConnectionService.cs

该服务实现了 IDisposable 接口,并且应该释放底层的 SqlConnection(IDbConnectionService 继承自 IDisposable)。

不幸的是,这个 Dispose() 方法永远不会被调用。因此,就目前情况而言,它将保持与数据库的连接处于打开状态。这是一件(真的)坏事:-)

我的问题是如何使用依赖注入来解决这个问题。

我正在尝试模拟我从 Java 上的 Spring MVC 中知道的模式。每个服务都可以调用 getCurrentSession() 来获取 Hibernate 会话。一个请求范围的 SessionFactory 被注入,每个服务都可以执行 sessionFactory.getCurrentSession() 来获取当前会话。

我很想用 NancyFX 和 TinyIOC 做同样的事情。

回到我最初的问题:为什么不对使用 AsPerRequestSingleton() 创建的对象调用 Dispose 方法,我该怎么做才能获得预期的结果?(在请求/响应范围内存在的对象,完成后将自动释放)

在此先感谢并致以最诚挚的问候, Marc Schlechter

0 投票
2 回答
322 浏览

database-connection - 请求在 NancyFx 应用程序中结束后未关闭数据库连接

我正在构建一个 Nancy Web 应用程序,并使用 OrmLite 进行数据库访问。我注意到每个请求都会打开一个新的数据库连接并且不会关闭它。我认为在 Application 容器中注册 OrmLiteConnection 类会使其成为应用程序范围,但看起来我错过了一些东西。

这是我的代码(在ConfigureApplicationContainer):