私は、取得リクエストを使用してデータベースから検索結果を返すAPIを作成しています。オプションのパラメータを渡すことができるようにしようとしていますWCFで簡単)、空である限りパラメータがクエリ文字列に指定されていれば、サービスによって無視されます。WCF 4:GETリクエストで空のパラメータを渡す
しかし、パラメータが空のクエリ文字列を使用している場合、サーバーによって不正なリクエスト(400)が返されます。
:maxSalaryとminSalary渡していない値
あなたは、その後、次のWCFサービスを持っていることを、次のクエリ文字列
http://www.exampleservice.com/basic/?apiKey=1234&noOfResults=3&maxSalary=&minSalary=&ouId=0&keywords=Web+Developer
ノートを渡し、お好みのエンドユーザーのポイントを使用します
[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サービス、これはちょうど不可能ですか?
null可能な型は、WCF 4のボックスの外ではサポートされていないため、クエリー・ストリング変換器は現在オーバーロードできません。 - いい答えですが、WCF 4のSP1でこれはうまくいきました – Jay
ああ、それは、毎日のことです。あなたの他の質問に答えて:クエリの変換は、パイプラインの唯一のフックあなたはそれを変更する必要がありますか? OnBeginRequestイベントなどで空のパラメータを削除することはできないでしょうか? – Syg