SilverlightでHttpWebRequestを発行し、応答のヘッダーを(とりわけ)読み取ろうとしています。残念ながら、応答オブジェクト(HttpWebResponse)を取得することはできますが、Headersコレクションにアクセスしようとすると、「実装されていない」例外が発生します。これを行う方法のアイデアはありますか?Azureから大きなレコードセット(約8k行)をプルしようとしていますが、継続トークンの応答ヘッダーを確認する必要があります。
4 に答える
@silverfighterのおかげで、私は答えを持っています。秘訣は、SilverLight 3に、ブラウザー(デフォルト)ではなくクライアント(.NET)に呼び出しを処理させるように指示することでした。これを行うと、WebClientアプローチとHttWebRequestアプローチの両方を介して応答ヘッダーにアクセスできるようになります。詳細はこちら:
http://blogs.msdn.com/carlosfigueira/archive/2009/08/15/fault-support-in-silverlight-3.aspx http://msdn.microsoft.com/en-us/library/dd470096(VS .95).aspx http://blogs.msdn.com/silverlight_sdk/archive/2009/08/12/new-networking-stack-in-silverlight-3.aspx
HttpWebRequestは、応答ヘッダーコレクションへのアクセスを許可しません。代わりにWebClientを使用してください。これにより、WebResponse.Headersプロパティが公開されます。
残念ながら、そのプロパティは存在しますが、同様に実装されていない例外を返します。
これが思ったほど難しいとは思えませんが…多くの人が同じ要件を持っていると思います。
応答ヘッダーは、ブラウザーのHttp処理ではサポートされていません。HttpHandlerを呼び出す前に、クライアントHttp処理を指定する必要があります。
bool httpResult = WebRequest.RegisterPrefix( "http://"、WebRequestCreator.ClientHttp);
WebClient wc = new WebClient();
wc.OpenReadCompleted + = new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
wc.OpenReadAsync(...);
結果ヘッダーは、wc_OpenReadCompletedメソッドのwebClientオブジェクトで使用できるようになります。ご覧ください:http ://msdn.microsoft.com/en-us/library/dd920295 (v = vs.95).aspx