「application/x-www-form-urlencoded」投稿データを WCF でサポートするための最良の方法で提案されている方法を使用して、WCF にデータを投稿していますか?
http://blogs.southworks.net/erossetto/2007/09/03/raw-http-post-with-wcf/の例に従っていますが、問題なく動作しているようです。ただし、1 つの問題は、要求内のストリームの管理にあります。次のようなヘルパーメソッドを作成しました
public static NameValueCollection ParsePOSTRequest(Stream input)
{
StreamReader sr = new StreamReader(input);
string s = sr.ReadToEnd();
sr.Dispose();
return HttpUtility.ParseQueryString(s);
}
すべてのメソッドでこれを呼び出しているので、パラメーターを簡単に検索できます。経由でリクエストに関する情報にアクセスしようとすると、ここで問題に気付きましたWebOperationContext.Current
。プロパティまたはメソッドThe System.ServiceModel.Channels.MessageProperties object has been disposed.
は、ビジネスロジックを実行する前にストリームリーダーが破棄されているという事実から明らかに発生するような例外をスローします。
「処分していいのか?」という問題です。代わりに単に閉じるだけですか?それとも、まったく閉じる必要さえありませんか?メソッドが終了した後、フレームワークはまだそのストリームを必要としていますか?