- - PR -
クライアント側でサーバのWebメソッドでThrowした例外オブジェクトを受取りたい
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-01-20 21:13
毎々お世話になっております。
例外をただスローするだけのWebメソッドを実装したWebサービスがあるとして、クライアント側のアプリケーション(下記例ではコンソールアプリ)でtry-catchをするとSystem.Web.Services.Protocols.SoapExceptionがcatchされます。 これはサーバ側のWebメソッド内でThrowされた例外をASP.NETがSoapExceptionに丸め込むようなのですが、この例外オブジェクトのInnerExceptionプロパティに内部例外(Webメソッド内でThrowした例外オブジェクト)が格納されているかと思いきやnullでした。 このSoapExceptionからWebサービスのWebメソッド内でThrowした例外オブジェクトを取得する方法というのは無いのでしょうか?(もとの例外情報はMessageプロパティにデータとしては格納されているのですが) ちなみに同じプロセス越えの手段として.NET Remotingだと可能なようです。 ご存知の方、何卒余禄お願い致します。
| ||||||||
|
投稿日時: 2005-01-20 22:38
で、疑問に思ってどういうことをしました?Webサービスをバインドすると、そのためのコードが作成されますが、それは見ました?
InnerException・・・というか、例外の情報は、どういうものがありますか?それを外に垂れ流すのがよいことだと思いますか? あるいは、Webサービスが例外をだして、それをWebサービス内で処理せず、クライアントまで返すのがよいつくりだと思いますか? _________________ | ||||||||
|
投稿日時: 2005-01-21 22:34
これ、ジレンマですよね。
フレームワークを用意した側は、Webサービスを広く一般に開放するサービスであると定義しています。その為、例外情報を流さないように作っている。 しかし、ある種の現場に置いては、ローカルLANで完結する中でWebサービスを利用する。そのため、例外情報が流れてもかまわない。むしろデバッグの時などは流れてきて欲しい... | ||||||||
|
投稿日時: 2005-01-25 11:23
返答が遅れて申し訳ありません。多忙のため、こちらの調査が後回しになってしまいました。
調べたところ、以下のURLにWebサービスで例外が発生した場合、.NETの思想としてサーバで詳細なログを取り、クライアント側には例外が発生した事実だけを通知することで例外情報を外部から隠蔽するとありました。 http://www.microsoft.com/japan/msdn/net/bda/exceptdotnet.asp
そもそもの発端は、今回Webサービスを置くサーバ機にはお客様の都合上簡単に触れるものではないので例外時にクライアントにも詳細な例外情報が取得できないかと考えてました。セキュリティの面では外部から完全に隔絶されたネットワーク上のシステムであること、SSLを使用すること、という点から例外情報がノードを超えても問題が無いと考えていました。
IEの設定にあるセキュリティ・ゾーンのようなものがあると良いですね。穴になりやすいですが。 ご意見有難うございました。勉強になりました。 |
1