Я создаю API, который просто будет использовать запрос get, чтобы возвращать некоторые результаты поиска из базы данных, я пытаюсь сделать так, чтобы необязательные параметры могли быть переданы (легко с WCF), но также, чтобы, если параметры заданы в строке запроса, пока они пусты, они будут игнорироваться службой.WCF 4: Передача пустых параметров в запросе GET
Однако, если у вас есть строка запроса с пустыми параметрами, она возвращает неверный запрос (400) сервером, например.
Используя точку конечного пользователя по своему выбору пройти следующие строки запроса
http://www.exampleservice.com/basic/?apiKey=1234&noOfResults=3&maxSalary=&minSalary=&ouId=0&keywords=Web+Developer
Обратите внимание, что maxSalary и minSalary не проходящие значения
Вы затем следующую WCF службу:
[OperationContract]
[WebGet(UriTemplate = "basic/?apiKey={apiKey}&noOfResults={noOfResults}&maxSalary={maxSalary}&minSalary={minSalary}&ouId={ouId}&keywords={keywords}", BodyStyle = WebMessageBodyStyle.Bare)]
public List<SearchResultsDto> BasicSearch(string keywords, string apiKey, int noOfResults, int maxSalary, int minSalary, int ouId)
{
//Do some service stuff
}
Это приведет к ошибке 400, пожалуйста, кто-нибудь может объяснить, как вы передаете пустые параметры в WC F или это просто невозможно?
Типы с нулевым значением не поддерживаются в ящике с WCF 4, и в настоящее время перегрузочный преобразователь не может быть перегружен. - Хороший ответ, хотя с SP1 WCF 4 это сработало бы – Jay
Ah thanx для этого, каждый день это schoolday ;-). В ответ на ваш другой вопрос: конвертер querystring - единственный крючок в конвейере, который вы должны изменить? Не удастся ли удалить пустые параметры в событии OnBeginRequest или что-то еще? – Syg