2012-08-02 22 views
8

Estoy escribiendo un servicio web que tiene muchos métodos. Todos ellos se establecen similar al siguiente:¿Cómo se configura el RequestFormat predeterminado para un WCF ServiceContract?

[OperationContract] 
    [WebInvoke(
     BodyStyle = WebMessageBodyStyle.Bare, 
     RequestFormat = WebMessageFormat.Json, 
     ResponseFormat = WebMessageFormat.Json, 
     UriTemplate = "x/y/z")] 
    void someMethod(int x, int y, int z); 

Lo que quiero hacer es establecer el valor predeterminado BodyStyle/RequestFormat/ResponseFormat todo en el archivo web.config. Ahora, sé que puedo hacer esto:

<endpointBehaviors> 
    <behavior name="webHttpBehavior"> 
     <webHttp defaultBodyStyle="Bare" defaultOutgoingResponseFormat="Json" /> 
    </behavior> 
    </endpointBehaviors> 

Pero no parece ser un atributo para el RequestFormat. ¿Cómo puedo configurar el valor predeterminado RequestFormat en JSON?

Respuesta

5

Los tipos de solicitud son automatically interpreted by WCF, no necesita especificar un valor predeterminado RequestFormat para su operación de servicio.

Si intenta imponer el formato de solicitud admitida, consulte this related SO post on enforcing request content types.

Nota: que no tiene sentido para asignar un RequestFormat para una operación de WebGet. Por definición, un WebGet no puede contener un Body que es donde existiría el formato JSON. Un mejor ejemplo aquí sería WebInvoke.

+1

Gracias para la aclaración! Entonces, mientras el cuerpo especifique el formato "aplicación/json", WCF lo levantará automáticamente, ¿correcto? –

+3

Un mensaje interesante que encontré en su enlace: "Si no se especifica ningún formato predeterminado en la operación, se usa el valor de la propiedad DefaultOutgoingResponseFormat". Así que, básicamente, si el póster no especifica el tipo de contenido, y no hay Formulario de solicitud en la operación, en realidad recogerá el formato delFolleto de respuesta de error predeterminado. Interesante. –

1

establecer la propiedad automaticFormatSelectionEnabled a true en webHttp elemento en el archivo web.config

<behaviors> 
    <endpointBehaviors> 
     <behavior> 
     <webHttp automaticFormatSelectionEnabled="true" /> 
     </behavior> 
    </endpointBehaviors> 
</behaviors> 


por ejemplo: puede establecer Accept:application/json en que recibe el extremo y obtener el resultado JSON.

pantallas cartero

Json response

================================== ==================================

Xml response


https://msdn.microsoft.com/en-us/library/ee476510(v=vs.110).aspx

Cuestiones relacionadas