我正在創建一個只使用get請求從數據庫返回一些搜索結果的API,我試圖讓可選參數可以傳遞(使用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不支持可空類型,並且目前querystringconverter不能被重載。 - 不錯的答案,雖然WCF 4的SP1,這將工作 – Jay 2011-02-03 12:07:45
啊比thanx,每天都是schoolday ;-)。爲了迴應你的其他問題:querystring轉換器是唯一需要修改的管道鉤子嗎?是不是可以刪除OnBeginRequest事件中的空參數? – Syg 2011-02-11 08:46:35