著作一覧 |
読み返すと、典型的なおばかをしてるな。
1.InvalidCastExceptionで死ぬ+放置でタイムアウト
2.パケットを調査(Content-Lengthが変+パケット出てない)
3.Content-Length変=パケット生成中にInvalidCastExceptionで飛んでるんだろう(な、わけないじゃん。例外上がってるのに)→シリアライゼーションのどっかで引っ掛かってるんだろう→Flags属性付きenumはっけーん
4.intに変更
5.InvalidCastException止まる(しかし、偶然の産物なので、4で修正できたわけではない)→忘れる
6.放置調査→RSTはっけーん
7.RST受信後のリクエスト対策調査→プロクシを継承してConnection:Closeにする
8.InvalidCastExceptionさいげーん
9.パケット調査(レスポンスがSoapResponseじゃないことはっけーん)
3.がそそっかしい。あの時点で9.で再発見しているパケットを見ているんだから、InvalidCastException自体とenumは無関係と判断すべきだ。
しかし、なんなんだろう? 同一バイナリなのに今はちゃんと動く。ただスタックトレースには見たこともないクラス名があるから、名前(Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1)から想像するとSoapProxyが実行時にデシリアライゼーションクラスを自動生成していると推測できる。であれば、同様にシリアライゼーションクラスも自動生成(ソースじゃなくてアセンブリの)されるんじゃなかろうか。で、その自動生成の過程に得も言われぬ問題が隠されているとか。
ジェズイットを見習え |