SoapHeaderと格闘

SoapHeaderと格闘して、負けた。。。
スマートクライアントアプリで.net同士でsoapでやり取りしているのだが、認証の仕組みをSoapHeader使ってやろうとしていたんだけど、でもなんとか共通認証の仕組みは入れられそう。

カスタマイズしたSoapHeaderがSoapUnknownHeaderになってしまい、定義したクラスのインスタンスとして取得できないという問題が解決できず。
Client→ServerのときはOK、ServerからClientへの戻しの際にうまく受け取れていない。
Clientでの認証NG判断は、SoapHeaderで判断できず、しかたないのでSoapExceptionのmessage内に認証NGを示すExceptionのクラス名があるかどうかテキストで判断することに。全然いけてない。(InnerExceptionにも確か入ってこなかったはず。。。)


jQueryからsoapを投げてるのは、Server側でSoapUnknownHeaderで受けてしまうのでSoapBodyで対応してしまっている。。。SoapHeaderをデシリアライズする際の指定の不備なんだと思うんだけど、いまいち該当の資料が見つけられず残念。。。


もうひとつの問題は、クライアントのWebServiceプロキシクラスにカスタムSoapHeaderをメンバとして持たせる必要があるのと、各プロキシメソッドに対して属性追加(SoapHeader、カスタムのSoapExtension指定)する必要がある。
プロキシクラスは、VisualStudioがWeb参照の追加、更新時にReference.csに作成してくれるのだがこのソースに対して編集をかけないといけない。編集しても、Web参照が更新されると編集した内容がクリアされてしまうので困った。。。
仕方ないので、クリアされた後上記属性を追加させるようなスクリプトを書いて対応する方向で検討中。
Rubyとかで出来ればいいけど、時間もないのでとりあえずvbscript。。。。