2017-08-15 9 views
0

Essayer de configurer RavenDb 3.5 et NServiceBus 6. Après avoir saisi la saga que j'ai configurée dans mon noeud final NServiceBus, je saisis un gestionnaire. Une fois ce gestionnaire terminé, j'obtiens cette erreur msg.Impossible de convertir en System.Guid

System.ArgumentException: Impossible de convertir l'identité de taper System.Guid car il ne correspond pas à convertisseur de type enregistré dans les IdentityTypeConvertors de conventions

Mon code:

public static class AutoFacConfig 
{ 
    public static IContainer ConfigureAutofac() 
    { 
     var builder = new ContainerBuilder(); 

     var resourceManagerId = new Guid("6c9abcbb-c7ca-4a67-a149-5142f633f535"); 

     var dtcRecoveryBasePath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); 
     var recoveryPath = Path.Combine(dtcRecoveryBasePath, "NServiceBus.RavenDB", resourceManagerId.ToString()); 

     builder.Register(x => 
     { 
      var store = new DocumentStore 
      { 
       ConnectionStringName = "RavenDB", 
       ResourceManagerId = resourceManagerId, 
       TransactionRecoveryStorage = new LocalDirectoryTransactionRecoveryStorage(recoveryPath) 
      }; 
      store.DefaultDatabase = "MyDB"; 
      store.Initialize(); 
      store.Conventions.IdentityPartsSeparator = "-"; 
      var _guidTypeConvertor = store.Conventions 
       .IdentityTypeConvertors 
       .FirstOrDefault(id => id.CanConvertFrom(typeof(Guid))); 
      if (_guidTypeConvertor != null) 
       store.Conventions.IdentityTypeConvertors.Remove(_guidTypeConvertor); 
      return store; 
     }) 
      .As<IDocumentStore>() 
      .SingleInstance(); 

     builder.Register<IFilesStore>(x => 
     { 
      var fileStore = new FilesStore() 
      { 
       Url = "http://localhost:40000", 
       DefaultFileSystem = "MyFS", 
      }.Initialize(); 
      return fileStore; 
     }).SingleInstance(); 

     return builder.Build(); 
    } 
} 

Dans la saga:

protected override void ConfigureHowToFindSaga(SagaPropertyMapper<FileToOrderSagaData> mapper) 
    { 
     mapper.ConfigureMapping<StartFileToOrderSagaCommand>(m => m.DataId) 
      .ToSaga(s => s.DataId); 
    } 

    public async Task Handle(StartFileToOrderSagaCommand message, IMessageHandlerContext context) 
    { 
     // Do Validation ValidateXmlCommand 
     Data.DataId = message.DataId; 
     await context.Send<ValidateXmlCommand>(x => { x.Filename = message.Filename; x.CustomerId = message.CustomerId; }); 
    } 

est ici la trace de la pile:

System.ArgumentException: Could not convert identity to type System.Guid because there is not matching type converter registered in the conventions' IdentityTypeConvertors 
at Raven.Client.Document.GenerateEntityIdOnTheClient.SetPropertyOrField(Type propertyOrFieldType, Object entity, Action`1 setIdentifier, String id) in C:\Builds\RavenDB-Stable-3.5\Raven.Client.Lightweight\Document\GenerateEntityIdOnTheClient.cs:line 167 
at Raven.Client.Document.GenerateEntityIdOnTheClient.TrySetIdentity(Object entity, String id) in C:\Builds\RavenDB-Stable-3.5\Raven.Client.Lightweight\Document\GenerateEntityIdOnTheClient.cs:line 143 
at Raven.Client.Document.InMemoryDocumentSessionOperations.<GenerateDocumentKeyForStorageAsync>d__99.MoveNext() in C:\Builds\RavenDB-Stable-3.5\Raven.Client.Lightweight\Document\InMemoryDocumentSessionOperations.cs:line 833 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at Raven.Client.Document.InMemoryDocumentSessionOperations.<StoreAsyncInternal>d__96.MoveNext() in C:\Builds\RavenDB-Stable-3.5\Raven.Client.Lightweight\Document\InMemoryDocumentSessionOperations.cs:line 803 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at NServiceBus.Persistence.RavenDB.SagaPersister.<Save>d__0.MoveNext() in C:\BuildAgent\work\c4d62ce02b983878\src\NServiceBus.RavenDB\SagaPersister\SagaPersister.cs:line 24 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at NServiceBus.SagaPersistenceBehavior.<Invoke>d__1.MoveNext() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Sagas\SagaPersistenceBehavior.cs:line 133 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at NServiceBus.LoadHandlersConnector.<Invoke>d__1.MoveNext() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\Incoming\LoadHandlersConnector.cs:line 40 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at NServiceBus.InvokeSagaNotFoundBehavior.<Invoke>d__0.MoveNext() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Sagas\InvokeSagaNotFoundBehavior.cs:line 16 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at NServiceBus.DeserializeLogicalMessagesConnector.<Invoke>d__1.MoveNext() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\Incoming\DeserializeLogicalMessagesConnector.cs:line 31 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at NServiceBus.Persistence.RavenDB.OpenAsyncSessionBehavior.<Invoke>d__1.MoveNext() in C:\BuildAgent\work\c4d62ce02b983878\src\NServiceBus.RavenDB\SessionManagement\OpenAsyncSessionBehavior.cs:line 21 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at NServiceBus.InvokeAuditPipelineBehavior.<Invoke>d__1.MoveNext() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Audit\InvokeAuditPipelineBehavior.cs:line 18 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at NServiceBus.SubscriptionReceiverBehavior.<Invoke>d__1.MoveNext() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Routing\MessageDrivenSubscriptions\SubscriptionReceiverBehavior.cs:line 29 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at NServiceBus.ProcessingStatisticsBehavior.<Invoke>d__0.MoveNext() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Performance\Statistics\ProcessingStatisticsBehavior.cs:line 27 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at NServiceBus.ReceivePerformanceDiagnosticsBehavior.<Invoke>d__2.MoveNext() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Performance\Statistics\ReceivePerformanceDiagnosticsBehavior.cs:line 40 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at NServiceBus.TransportReceiveToPhysicalMessageProcessingConnector.<Invoke>d__1.MoveNext() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\Incoming\TransportReceiveToPhysicalMessageProcessingConnector.cs:line 37 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at NServiceBus.MainPipelineExecutor.<Invoke>d__1.MoveNext() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\MainPipelineExecutor.cs:line 32 
--- End of stack trace from previous location where exception was thrown -- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at NServiceBus.ReceiveStrategy.<TryProcessMessage>d__7.MoveNext() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Transports\Msmq\ReceiveStrategy.cs:line 109 
--- End of stack trace from previous location where exception was thrown --- 
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
at NServiceBus.TransactionScopeStrategy.<ProcessMessage>d__2.MoveNext() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Transports\Msmq\TransactionScopeStrategy.cs:line 86 

Recherché partout pour découvrir ceci, mais je n'ai aucune idée de ce que ce truc de Guid et de convertisseur est.

Toute aide les gars? Thx

+2

vous devriez nous montrer du code peut-être. Ou n'avez-vous pas écrit de code? @ankit_sharma mère de la trace de la pile? : D –

+0

True! Ajout d'un code –

+3

Que fait cette ligne 'store.Conventions.IdentityTypeConvertors.Remove (_guidTypeConvertor);'? – mjwills

Répondre

0
store.Conventions.IdentityTypeConvertors.Remove(_guidTypeCon‌​vertor); 

supprime le convertisseur de type de ligne. C'est la raison pour laquelle vous rencontrez:

System.ArgumentException: Impossible de convertir l'identité de taper System.Guid car il ne correspond pas à convertisseur de type enregistré dans les IdentityTypeConvertors de conventions

Vous devriez enlever cette ligne de code.