ASP.NET MVC 2 с NServiceBus не может загрузить запрошенные типы - PullRequest
2 голосов
/ 06 апреля 2010

Я пытаюсь использовать NServiceBus с веб-сайтом ASP.NET MVC 2 (с использованием VS 2010 и платформы .NET 4.0). Однако, когда я запускаю сайт на локальном компьютере, я получаю следующую ошибку:

Невозможно загрузить один или несколько запрошенных типов. Получите свойство LoaderExceptions для получения дополнительной информации.

Вот соответствующие шаги, которые я предпринял:

  • Загрузил двоичные файлы NServiceBus.2.0.0.1145
  • В моем приложении asp.net mvc я добавил ссылки на NServiceBus.dll и NServiceBus.Core.dll
  • В Global.asax.cs я добавил:
public static IBus Bus { get; private set; }
protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    RegisterRoutes(RouteTable.Routes);

    Bus = NServiceBus.Configure
        .WithWeb()
        .Log4Net()
        .DefaultBuilder()
        .XmlSerializer()
        .MsmqTransport()
            .IsTransactional(false)
            .PurgeOnStartup(false)
        .UnicastBus()
            .ImpersonateSender(false)
        .CreateBus()
        .Start();
}
  • В web.config я добавил:
<MsmqTransportConfig 
  InputQueue="MyWebClient" 
  ErrorQueue="error" 
  NumberOfWorkerThreads="1" 
  MaxRetries="5"/>

<UnicastBusConfig>
  <MessageEndpointMappings>
    <add Messages="Messages" Endpoint="MyServerInputQueue"/>
  </MessageEndpointMappings>
</UnicastBusConfig>

Ошибка указывает, что проблема связана с первой строкой в ​​файле Global.asax.cs. Возможно ли, что есть проблема с NServiceBus, работающим под .NET 4.0?

Ответы [ 3 ]

7 голосов
/ 06 апреля 2010

Проверьте исключения LoaderException и посмотрите, на какую сборку он жалуется, затем исключите ее, вызвав Configure.With (AllAssemblies.Except ("problemmaticAssembly.dll") вместо Configure.WithWeb (), а оставшуюся часть свободного кода инициализации оставьте то же самое.

2 голосов
/ 01 июня 2010

У меня была такая же проблема. При проверке исключений LoaderException, как предполагает Udi, сборка проблемы была идентифицирована как «Antlr3.Runtime.dll». Эта сборка не имела прямой ссылки в моем проекте, но была зависимой от NHibernate.dll, на которую ссылалась.

Поэтому добавление With (AllAssemblies.Except ("Antlr3.Runtime.dll")) не исправило это для меня, мне пришлось изменить его на With (AllAssemblies.Except ("NHibernate.dll")). 1003 *

Так что, если вы столкнулись с этой проблемой, и исключение сборки напрямую ее не исправляет, попробуйте проверить зависимые сборки при помощи Reflector, чтобы определить источник проблемы. Надеюсь, это поможет кому-то с подобной проблемой ...

0 голосов
/ 13 января 2014

Похоже на rob, но я добавил перенаправление привязки и решил мою проблему - мой deploy.ps1 не удался, и я не хотел перекомпилировать.

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>
...