チャットのお勉強の続編です。
まずはこいつ。
リモート処理の例 : デリゲートおよびイベント
これが、動きません。
ハンドルされていない例外 : System.Security.SecurityException: 型 System.DelegateSerializationHolder とそれから派生した型 (例 System.DelegateSerializationHolder) は、このセキュリティ レベルでは逆シリアル復元することが許可されていません。
こんなエラーが出てしまいます。
困ったときのGoogle
ちょっと違うけど、こんなんが見つかりました。
.NET Remotingは、Framework1.1よりセキュリティ強化が行われたことが関係していると思います。
回避するには、構成ファイルにtypeFilterLevel=”Full”を指定する必要があります。
#コールバック/イベントを使用している場合には、クライアント構成ファイル
#にも修正が必要です。
てな記述を発見。試してみるが効果なし。うーんどうも違う。
関連して、こんな記述を発見
キーペアによる署名をされていますか?
アセンブリの信頼を行うには、ストロング ネームによる署名が必要になります。
これに関連して、こんな記述も。。。
> http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn
> library/ja/cpguide/html/cpconremotingexampledelegatesevents.asp
これは、.NET Framework1.0のサンプルですね。
> セキュリティ レベルでは逆シリアル復元することが許可されていません。
.NET Framework1.1であればSDKドキュメントのms-help://MS.NETFrameworkSDKv1.1.JA/cpguidenf/html/cpconautomaticdeserializationinnetremoting.htmを読んでみて下さい。
> ****のご指摘が回避方法であればその仕方の載っているURL等
> 教えてください。
URLというより、SDKドキュメントにも記載があると思います。
ms-help://MS.NETFrameworkSDKv1.1.JA/cpguidenf/html/cpconworkingwithstrongly-namedassemblies.htm
さぁ、奥が深くなってきました。
そこで、ms-help://MS.NETFrameworkSDKv1.1.JA/cpguidenf/html/cpconworkingwithstrongly-namedassemblies.htmを見てみます。
これを読む限りでは、VisualStudioでプロジェクトを作成してビルドするのが正しいらしい。
試してみるが、、、VisualStudioでビルドするとアセンブリはちゃんと署名されるようだが、今度は、クライアントのexeがローカルのdllを使って起動しちゃうので、ぜんぜんブロードキャストがかからない。
うーん。
先のサンプルだとちゃんとリモートのDLLで起動してるんだけど、署名がされてないから、エラーになる。
今度のVisualStudioだと、ローカルで起動しちゃうから、ブロードキャストにならない。
おいらの、VisualStudioのプロジェクトの作り方が間違ってるんだろうなぁ。
ちうか、VisualStudioに対応したサンプルどっかに落ちてないかな。
.NET FrameworkSDK1.0のサンプルと、.NET FrameworkSDK1.1のサンプルと、ごちゃごちゃで見つかってくるから、余計に話がややこしくなっている予感。
というか、俺が自分でややこしくしてるのは間違いないが。。。