- - PR -
GetResponseStreamの内容について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-27 13:17
そもそもArgumentExceptionは
で発生しているんだと思います。
これはデバッグでとめても見れないんですか? StreamReaderの生成で例外が発生しているのなら見れそうなもんですけど。。。 | ||||||||
|
投稿日時: 2006-07-27 13:20
失礼しました。
WebExceptionを拾った中の処理で例外が出ていたのですね。 なら、WebExceptionをキャッチした中で、もう1個try〜catchを 入れてみたらいかがでしょう? 何かヒントが見つかると良いですね。 catch(WebException we) { try { } cacth( System.ArgumentException ae) { // ログ処理 } } | ||||||||
|
投稿日時: 2006-07-27 13:38
こんにちは。
いくつか情報が足りていない部分があるのではないかと思います。 エラーが発生した時点で、Web サービスが返しているステータスコードは 何番でしょうか。 # 301 とか 302 だったりしなきゃいいけど 相手側の Web サービスの http サーバープログラムと OS (念のため) の種類を教えてください。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||
|
投稿日時: 2006-07-28 09:42
ステータスが404で返ってくるテストをしました。
catch(WebException webExcp)の中にさらにtry〜catchで catch(System.ArgumentException ag)を入れたところ、キャッチされたエラーは 「ストリームを読み取れませんでした。」となっています。 OSはWindow2000Serverです <Webサービスのコード> [WebMethod] public string WebSrv_YesPara(string pRtn, out string rMsg) { rMsg = pRtn; return "リターン成功(引数あり)"; } <クライアントのコード> try { pIP=クライアントのIPアドレス; rMsg = _chkSrv.WebSrv_YesPara(pIP,out wMsg); ・ ・ } catch(WebException webExcp) { wMsg = webExcp.Status + "-" + webExcp.Message + "\\r\\n"; if (webExcp.Status == WebExceptionStatus.ProtocolError) { HttpWebResponse response = (HttpWebResponse)webExcp.Response; try { Stream st = response.GetResponseStream(); Encoding enc = Encoding.UTF8; StreamReader sr = new StreamReader(st, enc); ←ここでArgumentException エラーに飛ぶ wMsg += sr.ReadToEnd() + "\\r\\n"; sr.Close(); st.Close(); } catch(System.ArgumentException ag) { wMsg += "受信内容取得エラー1:" + ag.Message + "\\r\\n"; } } return wMsg; } return wMsg; |