2013-06-21 3 views
0

Je suis en train d'implémenter la fonctionnalité de bus de service azure dans une solution client Web Forms asp.net. Un rôle de travail interroge périodiquement le bus à la recherche de nouveaux messages et un rôle Web est défini pour l'application Webform existante, qui est chargée d'ajouter des messages de mise en file d'attente de bus.Echec du chargement de l'assembly ServiceBus lors du débogage

Chaque fois que je tente de lancer l'application locale i obtenir une erreur due à l'assemblage Microsoft.ServiceBus étant une non-concordance de la ... attendue

System.IO.FileLoadException was unhandled 
    HResult=-2146234304 
    Message=Could not load file or assembly 'Microsoft.ServiceBus, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 
    Source=Azure.EnquiryWorker 
    FileName=Microsoft.ServiceBus, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
    FusionLog==== Pre-bind state information === 
LOG: User = *Omitted* 
LOG: DisplayName = Microsoft.ServiceBus, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
(Fully-specified) 
LOG: Appbase = file:///C:/Users/*path omitted*/*project name omitted*/csx/Debug/roles/Azure.EnquiryWorker/approot 
LOG: Initial PrivatePath = C:\Users\*path omitted*/*project name omitted*\csx\Debug\roles\Azure.EnquiryWorker\approot 
Calling assembly : Azure.EnquiryWorker, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. 
=== 
LOG: This bind starts in default load context. 
LOG: Using application configuration file: C:\Users\*path omitted*/*project name omitted*\csx\Debug\roles\Azure.EnquiryWorker\approot\Azure.EnquiryWorker.dll.config 
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config. 
LOG: Post-policy reference: Microsoft.ServiceBus, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
LOG: Attempting download of new URL file:///C:/Users/*path omitted*/*project name omitted*/csx/Debug/roles/Azure.EnquiryWorker/approot/Microsoft.ServiceBus.DLL. 
WRN: Comparing the assembly name resulted in the mismatch: Minor Version 
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated. 

    StackTrace: 
     at Azure.EnquiryWorker.WorkerRole.OnStart() 
     at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeRoleInternal(RoleType roleTypeEnum) 
     at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeRole(RoleType roleType) 
     at Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.<InitializeRole>b__0() 
     at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
    InnerException: 

L'application WebForms a la dll serviceBus dans le dossier bin (qui est ajouté en tant que référence indirecte, car le code de bus de service réside dans un projet de bibliothèque).

Le GAC ne contient aucun assembly de servicebus, mes projets référencent tous la v2 de la DLL de servicebus et sont définis sur CopyLocal.

Répondre

2

Ce problème s'est facilement dissipé lorsque j'ai mis à jour le package Azure ServiceBus Nuget vers la version 2.1.

-1

Pour aider à déboguer cela pouvez-vous confirmer sur votre ordinateur local si vous avez Microsoft.ServiceBus.dll dans le GAC? Vérifiez également si cette version est différente de ce que vous avez référencé dans le projet.

+0

Le GAC ne contient aucun assembly de servicebus, mes projets référencent tous la v2 de la DLL de servicebus et sont définis sur CopyLocal. – Baldy

-1

Il semble que votre projet ne possède pas la DLL ou une version correcte de celle-ci. Construisez l'application et regardez dans le dossier/bin. Si vous trouvez la DLL (Microsoft.ServiceBus.dll), vérifiez la version et assurez-vous qu'elle correspond (Version = 2.0.0.0). Si vous ne le trouvez pas, il se peut que ce soit dans votre Global Assembly Cache.

Si cela ne vous aide pas, essayez: 1. Définissez copylocal = true dans vos propriétés de référence afin que la DLL soit copiée dans votre répertoire de sortie. 2. Utilisez le gestionnaire de paquets nuget pour créer un lien vers la DLL Microsoft.Servicebus. Il résout généralement beaucoup de problèmes similaires.

+0

Le GAC ne contient aucun assembly de servicebus, mes projets font tous référence à la v2 de la DLL de servicebus et sont définis sur CopyLocal. – Baldy

Questions connexes