У меня есть служба перезапуска WCF, и я хочу позволить пользователю выбрать, какой формат запроса он хочет, у меня есть украшения
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "getstreamurl?ch={ch}&format=xml")]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "getstreamurl?ch={ch}&format=json")]
Прежде всего, есть ли способ указать ResponseFormat во время выполнения и принять формат в качестве аргумента метода? От чтения вокруг я не думаю, что так ... Хорошо, следующая вещь
Приведенный выше код в порядке и работает, но у меня возникла проблема, я хочу иметь возможность указать значение по умолчанию, поэтому, когда аргумент формата не передается, тогда я просто по умолчанию, но если я украшаю, как это
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "getstreamurl?ch={ch})]
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "getstreamurl?ch={ch}&format=json")]
Если XML является значением по умолчанию, если я пытаюсь вызвать метод службы через браузер, он говорит мне, что:
UriTemplateTable не поддерживает несколько шаблонов, которые имеют эквивалентный путь в качестве шаблона 'getstreamurl? Ch = {ch}', но имеют разные строки запроса, где все строки запроса не могут быть устранены неоднозначностью через литеральные значения. См. Документацию для UriTemplateTable для более подробной информации
Их, очевидно, можно различить, но кажется, что WCF только читает аргумент и это все ... Есть предложения?