MAY
5

厳しいかも。

Silverlight 4で追加されたTrusted mode、とりあえず試してみているのだけど、結構制限が厳しくてつらい感じ。。Cookieは使えないし、GETメソッド使っているときに、headerを追加することもできない。これは、SilverlightがHTTP通信のスタックに、OSのTCP/IPスタックを直接たたいているのではなく、ブラウザのPlugin APIを叩いているためだとか。

Silverlight only supports setting headers using the POST method not the GET method. This is due to a limitation in how the TCP/IP stack is implemented in Silverlight. It uses the browser extension APIs instead of going directly against the host OS’s APIs.
http://stackoverflow.com/questions/622897/how-can-i-set-headers-with-silverlight-get-httpwebrequest

この問題を回避する方法としては、@jz5さん曰く、Socketを自分で叩いてHTTP通信すればいい、ということらしい。なんだかなぁ。。Silverlight 4でTrusted Modeをどれぐらい使う需要があるかは知らないけど(自分ならWPF+ClickOnceでいいや)、Windows PhoneアプリをSilverlightで書こうか、という場合に結構辛い気が。。WindowsPhoneは微妙に普通のSilverlightとビルディングブロックが違ってるから、案外動くのかもしれないけど(希望的観測)。

(追記) 試しにWindows Phoneでやってみたらheader追加できたw 嬉しいんだけど、HttpWebRequestみたいな非常に一般的なクラスでこのように挙動が違うというのは、困るので、正直複雑。何とかならんのか。