asp.net-mvc - 当我传递某些类型进行扫描时,MVC 中的 NServiceBus 初始化失败

标签 asp.net-mvc nservicebus nservicebus3

在我的 Bootstrap 中,我首先这样做:

    public static void Initialise()
    {
        var container = BuildUnityContainer();

        InitializeNServiceBus(container);

        DependencyResolver.SetResolver(new UnityDependencyResolver(container));
        ...
    }

而InitializeNServiceBus的内容是这样的:

    private static void InitializeNServiceBus(IUnityContainer container)
    {
        var typesToScan = new [] {
            typeof (RequestPasswordResetCommand),
            typeof (CreateAccountCommand)
        };

        Configure.With(typesToScan)
            .DefineEndpointName("somequeueonmysystem")
            .UnityBuilder(container)
            .XmlSerializer()
            //.MsmqSubscriptionStorage()
            .DisableRavenInstall()
            .DisableSecondLevelRetries() //we need timeout manager for this
            .DisableTimeoutManager() //we need raven db or similar for this //.RunTimeoutManager()
            .MsmqTransport()
                .IsTransactional(false)
                .PurgeOnStartup(false)
            .MsmqSubscriptionStorage()
                .IsTransactional(true)
            .UnicastBus()
                .ImpersonateSender(false)
            .SendOnly();
            //.CreateBus()
            //    .Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install()); 
    }    

但是,当我打开 MVC 应用程序时,我得到:

静态属性需要 null 实例,非静态属性需要非 null 实例。 参数名称:表达式

此处指出了错误的来源:

Line 82: 
Line 83:             Configure.With(typesToScan)
Line 84:                 .DefineEndpointName("InCityS.Events.UI.Nuvonet")
Line 85:                 .UnityBuilder(container)

堆栈跟踪:

[ArgumentException: Static property requires null instance, non-static property requires non-null instance.
Parameter name: expression]
   System.Linq.Expressions.Expression.Property(Expression expression, PropertyInfo property) +4114402
   NServiceBus.Utils.Reflection.DelegateFactory.Create(PropertyInfo property) in c:\TeamCity\buildAgent\work\nsb.master_2\src\utils\NServiceBus.Utils.Reflection\DelegateFactory.cs:91
   NServiceBus.Serializers.XML.XmlMessageSerializer.InitType(Type t) in c:\TeamCity\buildAgent\work\nsb.master_2\src\impl\Serializers\NServiceBus.Serializers.XML\XmlMessageSerializer.cs:133
   NServiceBus.Serializers.XML.XmlMessageSerializer.InitType(Type t) in c:\TeamCity\buildAgent\work\nsb.master_2\src\impl\Serializers\NServiceBus.Serializers.XML\XmlMessageSerializer.cs:138
   NServiceBus.Serializers.XML.XmlMessageSerializer.Initialize(IEnumerable`1 types) in c:\TeamCity\buildAgent\work\nsb.master_2\src\impl\Serializers\NServiceBus.Serializers.XML\XmlMessageSerializer.cs:948
   NServiceBus.Serializers.XML.Config.MessageTypesInitializer.Run() in c:\TeamCity\buildAgent\work\nsb.master_2\src\impl\Serializers\NServiceBus.Serializers.XML.Config\MessageTypesInitializer.cs:20
   NServiceBus.Configure.<Initialize>b__d(IWantToRunWhenConfigurationIsComplete o) in c:\TeamCity\buildAgent\work\nsb.master_2\src\config\NServiceBus.Config\Configure.cs:305
   System.Collections.Generic.List`1.ForEach(Action`1 action) +10722241
   NServiceBus.Configure.Initialize() in c:\TeamCity\buildAgent\work\nsb.master_2\src\config\NServiceBus.Config\Configure.cs:304
   NServiceBus.Configure.SendOnly() in c:\TeamCity\buildAgent\work\nsb.master_2\src\config\NServiceBus.Config\Configure.cs:364
   InCityS.UI.Open.Bootstrapper.InitializeNServiceBus(IUnityContainer container) in d:\Data_nobackup\Projects\InCityS\trunk\UI\InCityS.UI.Open\Bootstrapper.cs:83
   InCityS.UI.Open.Bootstrapper.Initialise() in d:\Data_nobackup\Projects\InCityS\trunk\UI\InCityS.UI.Open\Bootstrapper.cs:53
   InCityS.UI.Open.MvcApplication.Application_Start() in d:\Data_nobackup\Projects\InCityS\trunk\UI\InCityS.UI.Open\Global.asax.cs:79

[HttpException (0x80004005): Static property requires null instance, non-static property requires non-null instance.
Parameter name: expression]
   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9859725
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +336
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296

[HttpException (0x80004005): Static property requires null instance, non-static property requires non-null instance.
Parameter name: expression]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9873912
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

当我将 typesToScan 更改为

var typesToScan = new Type[]{};

应用程序再次工作,但当然,一旦我尝试将某些东西放在总线上,它就会失败,并表示它不知道通过扫描类型的类型。

任何人都知道在哪里查找或有此错误的经验吗?

最佳答案

检测到问题。 我通过要扫描的类型添加的消息之一有一个属性,该属性是 op 类型“CultureInfo”,该属性与序列化效果不佳。

namespace InCityS.BL.Account.Messages
{
    public class CreateAccountCommand : ICommand
    {
        public string UserName { get; set; }
        public string Password { get; set; }

        public string FirstName { get; set; }
        public string LastName { get; set; }

        public CultureInfo Culture { get; set; }
    }
}

被替换为:

namespace InCityS.BL.Account.Messages
{
    public class CreateAccountCommand : ICommand
    {
        public string UserName { get; set; }
        public string Password { get; set; }

        public string FirstName { get; set; }
        public string LastName { get; set; }

        public string Culture { get; set; }
    }
 }

关于asp.net-mvc - 当我传递某些类型进行扫描时,MVC 中的 NServiceBus 初始化失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14466650/

相关文章:

c# - ASP.Net MVC ModelState/Html.TextBox 回发问题

asp.net-mvc - 如何在@Html.TextBox mvc4 中添加新的 css 类

configuration - NServiceBus 端点名称如何与发布/订阅一起使用

msmq - NServiceBus - 消息并不总是传递并导致异常无法登记事务

asp.net-mvc - Silverlight 还是 MVC.NET?

c# - Asp.net ViewModel 返回 null

NServiceBus 消息处理程序未按预期顺序触发 Saga 处理程序提前触发

rest - 消息传递 - 所有属性或只是一个 id 指针

nservicebus3 - 包装 NServiceBus.IHandleMessages