LoginSignup
0
0

More than 1 year has passed since last update.

FaultExceptionに変換されたSoapExceptionの中身を取り出す【actor,detail,code,message】

Posted at

 何をしたいのか

Webサービスに<WebMethod>の関数を作成して、SOAPを使って通信します。
例外が発生したらSoapExceptionとやらを返却します。

実際にWebサービスではそういう感じで、

'実際のパラメータは違う型です
Throw New SoapException("Message", "Code", "Actor", "Detail") 

みたいに書きました。

何が起きたのか

SoapExceptionでCatchしようとしたらCatchできませんで、一体何が……と思ったらFaultExceptionとかいう例外が返ってきてました。

なるほど道理でCatchできないわけですね。

型が違うもんね。

なんでだよ。

と自分に突っ込むのも虚しく、調査のための検索結果はそれ以上に寂しいものでした。
SOAP、情報がない……いくらなんでもなさすぎる……

探すのが下手なだけかも知れませんがそれは下手っぴにとっては情報がないのと同義です。

なければ編み出せばいいじゃないってマリーも言ってるから編み出してみました。

ここまでが前振りです。

茶番にお付き合いいただきありがとうございます。

取得方法

まず、なんでSoapExceptionが変換されるのかという理由はわかりません。
おしえてください

ちなみに今回おしごとでこういうことをしてる(人に聞けないのでマリーの言う通り編み出してる)んですが、既存の他のクライアントを流用して通信したところSoapExceptionがちゃんと受け取れたので、呼び出し元の問題というのは間違いなさそうです。

さらに編み出そうとしてる通信方法はSoapExceptionを受け取るのがメインではなく、設定値がちゃんと連携されていることがわかればよい状況でした。

というわけで設定値さえ拾えれば問題ない……そんな感じのニッチな話なのですが、肝心の拾う方法が検索しても出てこず、総当たり的に探し出す羽目になったので記録に残しておきます。

Soap設定値 Fault格納場所
Message ex.Message
Code ex.Code.Name ServerかClientが入る。
Actor ex.CreateMessageFault.Actor
Detail ex.CreateMessageFault.GetReaderAtDetailContents.Value
設定側でdetail=に入れた値が取れる。

どっとはらい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0