小编tke*_*ker的帖子

使用Structureer为NServiceBus和MVC管理RavenDB IDocumentSession生命周期

我在我们的解决方案中使用NServiceBus v4.3,MVC4,RavenDB 2.5和StructureMap 2.6.4.

我在StructureMap下遇到类似问题的问题,在这个问题回答中我要求MVC控制器使用不同的生命周期,NServiceBus Handler在我的Web项目中使用RavenDB的IDocumentSession.

特别是在我的情况下,如果我使用HybridHttpOrThreadLocalScoped(如上面的答案建议Windsor)生命周期,会话没有被妥善处理,我很快就达到了30个事务限制错误.如果我使用HttpContext生命周期,则不会调用Web项目中的NSB事件处理程序.

在我的控制器中,会话被包含在通过MVC ActionFilter应用的工作单元中.我也使用处理程序中的UoW,因为我的注册表已连线以从UoW检索会话.代码是这样的:

RavenDbWebRegistry.cs

public sealed class RavenDbWebRegistry : Registry
{
    public RavenDbWebRegistry()
    {
        // register RavenDB document store
        ForSingletonOf<IDocumentStore>().Use(() =>
        {
            var documentStore = new DocumentStore
            {
                ConnectionStringName = "RavenDB",
                Conventions =
                {
                    IdentityPartsSeparator = "-", 
                    JsonContractResolver = new PrivatePropertySetterResolver(),
                },

            };
            documentStore.Initialize();

            return documentStore;
        });


        For<IDocumentSession>().HybridHttpOrThreadLocalScoped().Add(ctx =>
        {
            var uow = (IRavenDbUnitOfWork)ctx.GetInstance<IUnitOfWork>();
            return uow.DocumentSession;
        });

        For<IUnitOfWork>().HybridHttpOrThreadLocalScoped().Use<WebRavenDbUnitOfWork>();            

    }
}
Run Code Online (Sandbox Code Playgroud)

Web项目处理程序示例:

public class SiteCreatedEventHandler : IHandleMessages<ISiteCreatedEvent>
{
    public IBus Bus …
Run Code Online (Sandbox Code Playgroud)

structuremap nservicebus ravendb asp.net-mvc-4

5
推荐指数
1
解决办法
918
查看次数

我有在NUnit GUI和Resharper中传递的单元测试,但在Team City运行它们时失败

我有一个TeamCity服务器设置为构建多个解决方案,然后使用NUnit Test Runner在其中运行单元测试.

这已经好几个月了; 但是,使用我们的最新版本,我遇到以下错误:

SetUp方法失败.SetUp:System.IO.FileLoadException:无法加载文件或程序集'log4net,Version = 1.2.13.0,Culture = neutral,PublicKeyToken = 669e0ddf0bb1aa2a'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)

它只发生在整个系统中包含数百个测试的单个TestFixture中.使用ReSharper或NUnit GUI运行时,测试全部通过.

Nuget包在被测试的项目和测试项目本身中都被正确引用.由于只安装了一个版本的Log4Net,因此不需要运行时程序集绑定重定向.

是否有其他人有类似的问题,他们已经解决或任何想法可能是什么问题?为什么它在本地工作而不在服务器上工作,特别是考虑到先前传递的相同测试.

我本地计算机和TeamCity服务器上的NUnit版本是相同的.

teamcity nunit

5
推荐指数
1
解决办法
1221
查看次数