Я разрабатываю некоторые УСПОКОИТЕЛЬНЫЕ сервисы в WCF 4.0. У меня есть метод как указано ниже:
[OperationContract]
[WebGet(UriTemplate = "Test?format=XML&records={records}", ResponseFormat=WebMessageFormat.Xml)]
public string TestXml(string records)
{
return "Hello XML";
}
Таким образом, если я перемещаюсь по своему браузеру на http://localhost:8000/Service/Test?format=XML&records=10, затем все работает exepcted.
ОДНАКО я хочу смочь перейти на http://localhost:8000/Service/Test?format=XML и бросить "&records=10" часть URL. Но теперь, я получаю сервисную ошибку, так как URI не соответствует ожидаемому шаблону URI.
Таким образом, как я реализую значения по умолчанию для некоторых моих параметров строки запроса? Я хочу принять значение по умолчанию "записи" на 10, например, если та часть брошена строка запроса.
Примечание: Этот вопрос устарел, пожалуйста, посмотрите другие ответы.
Похоже, это не поддерживается.
Однако Microsoft было известно об этой проблеме, и существует обходной путь:
Вы можете добиться желаемого эффекта, если опустив строку Query из UriTemplate в атрибуте WebGet или WebInvoke, и используя WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters из ваших обработчиков для проверки, устанавливать значения по умолчанию и т.д. для параметров запроса параметры.
https://connect.microsoft.com/VisualStudio/feedback/details/451296/