0

J'ai réussi à obtenir quelques flux de travail avec Server AppFabric. Ce que j'ai remarqué cependant, c'est que lorsque j'essaie d'utiliser namePipeBinding pour communiquer avec le workflow, l'appel fonctionne correctement pour le client (l'appel est marqué As IsOneWay = true dans la définition de l'interface pour le service) mais dans le AppFabric tableau de bord, je peux voir le message en cours de traitement avec succès et nous obtenons l'appel apparaissant comme un « service d'exception » à l'exception suivanteFlux de travail 4 sous l'erreur AppFabric dans AppDashboard lors de l'utilisation de tuyaux

System.ServiceModel.CommunicationException: There was an error reading from the pipe: The pipe has been ended. (109, 0x6d). ---> System.IO.IOException: The write operation failed, see inner exception. ---> System.ServiceModel.CommunicationException: There was an error reading from the pipe: The pipe has been ended. (109, 0x6d). ---> System.IO.PipeException: There was an error reading from the pipe: The pipe has been ended. (109, 0x6d). 
at System.ServiceModel.Channels.PipeConnection.OnAsyncReadComplete(Boolean haveResult, Int32 error, Int32 numBytes) 
--- End of inner exception stack trace --- 
at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result) 
at System.ServiceModel.Channels.ConnectionStream.ReadAsyncResult.End(IAsyncResult result) 
at System.Net.FixedSizeReader.ReadCallback(IAsyncResult transportResult) 
--- End of inner exception stack trace --- 
at System.Net.Security.NegotiateStream.EndRead(IAsyncResult asyncResult) 
at System.ServiceModel.Channels.StreamConnection.EndRead() 
--- End of inner exception stack trace --- 
at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result) 
at System.ServiceModel.Channels.FramingDuplexSessionChannel.TryReceiveAsyncResult.End(IAsyncResult result, Message& message) 
at System.ServiceModel.Dispatcher.DuplexChannelBinder.EndTryReceive(IAsyncResult result, RequestContext& requestContext) 
at System.ServiceModel.Dispatcher.ErrorHandlingReceiver.EndTryReceive(IAsyncResult result, RequestContext& requestContext) 

le flux de travail se compose de deux activités de réception, mais il n'a pas d'activitiies receiveandsendreply .

Tout fonctionne correctement lorsque j'utilise des liaisons http.

Pourquoi cette erreur est-elle signalée dans le tableau de bord?

Détails de la configuration pour l'application cliente sont présentés ci-dessous

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
      <binding name="BasicHttpBinding_ISLG" closeTimeout="00:01:00" 
       openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
       allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
       maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
       messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
       useDefaultWebProxy="true"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
        maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
       <security mode="None"> 
        <transport clientCredentialType="None" proxyCredentialType="None" 
         realm="" /> 
        <message clientCredentialType="UserName" algorithmSuite="Default" /> 
       </security> 
      </binding> 
     </basicHttpBinding> 
     <netNamedPipeBinding> 
      <binding name="NetNamedPipeBinding_ISLG" closeTimeout="00:01:00" 
       openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
       transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" 
       hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" 
       maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
        maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 

       <security mode="Transport"> 
        <transport protectionLevel="EncryptAndSign"/> 
       </security> 
      </binding> 
     </netNamedPipeBinding> 
    </bindings> 
    <client> 
     <endpoint address="net.pipe://vm-vsnet2010/TestWorkflowDeclarativeServiceLibrary/Service3.xamlx" 
      binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_ISLG" 
      contract="SLGService.ISLG" name="NetNamedPipeBinding_ISLG"> 
      <identity> 
       <servicePrincipalName value="host/VM-VSNET2010" /> 
      </identity> 
     </endpoint> 
    </client> 
</system.serviceModel> 

Répondre

0

Pouvez-vous présenter la configuration de liaison du serveur? Ils peuvent différer et c'est pourquoi le serveur ne peut pas recevoir de données du canal.

Observe

+0

Il n'y a pas de détails du côté du serveur de fichiers de configuration. Pour réitérer, le serveur traite avec succès les demandes, juste que beaucoup d'entrées apparaissent dans le tableau de bord appfabric concernant le succès des opérations de flux de travail (voir ci-dessus). – jamie

+0

Ok, maintenant je comprends mieux et c'est plus étrange :) D'une certaine manière, il semble être la création d'un canal duplex, donc pour une raison quelconque, il est appelé sur un mode bidirectionnel. Utilisez-vous une corrélation? Peut-être que cela aide: http://social.msdn.microsoft.com/Forums/en/wfprerelease/thread/47a94846-2191-454a-9ea8-1f8783e20b27 – Tasio

Questions connexes