configurar wcf query-string uri uritemplate

configurar binding wcf



ParĂ¡metros de cadenas de consulta opcionales en URITemplate en WCF? (5)

Estoy desarrollando algunos servicios RESTful en WCF 4.0. Tengo un método como el siguiente:

[OperationContract] [WebGet(UriTemplate = "Test?format=XML&records={records}", ResponseFormat=WebMessageFormat.Xml)] public string TestXml(string records) { return "Hello XML"; }

Entonces, si navego en mi navegador a http://localhost:8000/Service/Test?format=XML&records=10 , todo funciona como se exepto.

SIN EMBARGO, quiero poder navegar a http://localhost:8000/Service/Test?format=XML y dejar fuera la porción "& records = 10" de la URL. Pero ahora, recibo un error de servicio ya que el URI no coincide con la plantilla de URI esperada.

Entonces, ¿cómo implemento los valores predeterminados para algunos de mis parámetros de cadena de consulta? Quiero establecer los "registros" por defecto a 10, por ejemplo, si esa parte se deja fuera de la cadena de consulta.


Esto parece funcionar en WCF 4.0.
Solo asegúrese de establecer su valor predeterminado en su "Service1.svc.cs"

public string TestXml(string records) { if (records == null) records = "10"; //... rest of the code }




Según esta respuesta, esto se soluciona en .NET 4.0. Si no se proporciona el parámetro de cadena de consulta, parece que se le asigna el valor predeterminado para el tipo.


Nota: esta pregunta no está actualizada, por favor vea las otras respuestas.

Esto no parece ser compatible.

Sin embargo, Microsoft se ha enterado de este problema y hay una solución alternativa:

Puede obtener el efecto deseado al omitir la cadena de consulta de UriTemplate en su atributo WebGet o WebInvoke, y usar WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters desde sus controladores para inspeccionar, establecer los valores predeterminados, etc. en los parámetros de consulta.

https://connect.microsoft.com/VisualStudio/feedback/details/451296/