2011-05-15 11 views
8

Estoy tratando de usar codificación de mensaje binario en un servicio WCF, siguiendo los muchos ejemplos en este sitio.No se puede activar el enlace http binario en el servidor

En el servidor que he la unión declarada como tal:

<customBinding> 
    <binding name="binaryHttpBinding"> 
     <binaryMessageEncoding maxReadPoolSize="4096000" maxSessionSize="4096000" maxWritePoolSize="4096000"> 
      <readerQuotas maxDepth="32" maxStringContentLength="4096000" 
      maxArrayLength="4096000" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
     </binaryMessageEncoding> 
     <httpTransport maxBufferPoolSize="4096000" maxBufferSize="4096000" maxReceivedMessageSize="4096000"/> 
    </binding> 
</customBinding> 

El servicio está configurado para usarlo (creo):

<service behaviorConfiguration="MyService.ServiceBehavior" name="MyService.ContentUploadService"> 
    <endpoint 
     address="" 
     binding="customBinding" 
     bindingConfiguration="binaryHttpBinding" 
     contract="MyService.IContentUpload" 
     name="MyService.ContentUploadService" /> 

El cliente tiene las mismas declaraciones:

<customBinding> 
    <binding name="binaryHttpBinding"> 
     <binaryMessageEncoding maxReadPoolSize="4096000" maxSessionSize="4096000" maxWritePoolSize="4096000"> 
      <readerQuotas maxDepth="32" maxStringContentLength="4096000" 
      maxArrayLength="4096000" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
     </binaryMessageEncoding> 
     <httpTransport maxBufferPoolSize="4096000" maxBufferSize="4096000" maxReceivedMessageSize="4096000"/> 
    </binding> 
</customBinding> 

Y:

<endpoint 
    address="http://foo.com/ContentUploadService.svc" 
    binding="customBinding" 
    bindingConfiguration="binaryHttpBinding" 
    contract="MyService.IContentUpload" 
    name="MyService.ContentUploadService"/> 

El cliente parece estar funcionando, pero el servidor inicia una excepción que indica que la unión no está en su lugar:

contenido Tipo application/soap + msbin1 fue enviado a un servicio esperando texto/xml; charset = utf-8. El cliente y los enlaces de servicio pueden ser no coincidentes.

Inmediatamente antes de este error en el archivo de registro, este es el que se produce al intentar abrir el host del servicio, que debe ser la causa.

Contexto de evaluación de la configuración no encontrado.

Ninguno de los enlaces de búsqueda que he probado para este mensaje ha sido útil. Entonces, ¿qué pieza básica me estoy perdiendo?

+1

¿La configuración del servicio está en web.config? ¿Se hace referencia a System.ServiceModel.dll en su aplicación de servidor? –

+0

Sí y sí. El servicio funciona bien si cambio el enlace a basicHttpBinding (siempre que el tamaño del mensaje permanezca <64K). – David

+0

'Contexto de evaluación de configuración no encontrado' generalmente se activa si utiliza una configuración desconocida de enlace o comportamiento que no está registrada como extensión. Asegúrate de que no haya ningún tipo en tu configuración. Además, asegúrese de que su servicio @ nombre es correcto; debe ser Namespace.ServiceName como se define en el archivo .svc. –

Respuesta

1

¿Ha intentado configurar un host en el servidor para complementar el punto final?

creo que sería algo como esto:

<service behaviorConfiguration="MyService.ServiceBehavior" name="MyService.ContentUploadService">  
<host> 
    <baseAddresses> 
     <add baseAddress="http://foo.com/ContentUploadService.svc"/> 
    </baseAddresses> 
</host> 
<endpoint address="" binding="customBinding" indingConfiguration="binaryHttpBinding" contract="MyService.IContentUpload" name="MyService.ContentUploadService" /> 

la esperanza que esto sea útil

1

Se ve a mí como su servicio está utilizando la configuración por defecto, lo que ocurriría si no puede encontrar una explícita configuración. Asegúrese de que el atributo de nombre del elemento coincida exactamente con el nombre completo de su clase de servicio (espacio de nombres incluido).

Cuestiones relacionadas