2010-12-10 22 views
10

¿Por qué wsHttpBinding no admite la transmisión?¿Por qué wsHttpBinding no admite la transmisión?

EDIT: Para probar mi comentario sobre netTcpBinding, probé siguiente código, que da error de ejecución:

<netTcpBinding > 
     <binding name="myBinding" transferMode="Streamed">   
      <reliableSession enabled="true"/> 
     </binding> 
</netTcpBinding> 

Runtime excepción:

Unhandled Exception: System.InvalidOperationException: Transfer mode Streamed is 
not supported by ReliableSessionBindingElement. 
    at System.ServiceModel.Channels.ReliableSessionBindingElement.VerifyTransport 
Mode(BindingContext context) 

si <reliableSession enabled="true"/> se retira, el código funciona.

+2

Porque no lo diseñaron para. –

Respuesta

12

WsHttpBinding doesn't support streaming due to the reliable messaging protocol (WS-RM), which requires that messages are buffered on either end.

como se ha dicho here ... más información sobre WS-RM.

También hay otro mensaje here que indica los motivos de no ser capaz de transmitir frente a la utilización por qué ... por encima de

This is because WS-RM needs to apply signing/checksums to the whole message as a unity, etc; and this is not possible when streamed transferMode, only with buffered transferMode...

Además netTcpBinding en realidad hace de WS-RM para los propósitos de fiabilidad.

+1

gracias. ¿Alguna idea de por qué WS-RM requiere que los mensajes sean almacenados? NetTcpBinding ofrece confiabilidad y transmisión, por lo que supongo que la confiabilidad no impide la transmisión. – morpheus

+0

@morpheus Comentarios adicionales añadidos ... –

Cuestiones relacionadas