- - PR -
.NETリモーティングでアクセス許可の要求に失敗する
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-08-03 22:56
みなさん、おつかれさまです。
C#.NETでTCPチャネルによるリモーティングの検証をしているんですが、サーバーアプリケーションの実行で次のようなエラーメッセージが出力されます。 「XML ファイル c:\windows\microsoft.net\framework\v1.0.3705\Config\machine.config 種類 System.Security.Permissions.StrongNameIdentityPermission, mscorlib, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 のアクセス許可の要求に失敗しました。 の読み込みに失敗しました。」 セキュリティの問題だと思ったので、次のような手を打ってみましたが解決しませんでした。 ・Machine.config の<compilers> セクションを修正する。(http://support.microsoft.com/default.aspx?scid=kb;ja;318274) ・System.Security.Permissions.PermissionStateをNoneにする。 実際のソースはこちらです。 using System; using System.Threading; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; using System.Security.Permissions; namespace RemoteTest { class MyServer { [STAThread] static void Main(string[] args) { // StrongNameIdentityPermission perm = new StrongNameIdentityPermission(System.Security.Permissions.PermissionState.Unrestricted); // perm.Demand(); TcpChannel channel = new TcpChannel(8053); →ここでエラー ChannelServices.RegisterChannel(channel); RemotingConfiguration.RegisterWellKnownServiceType( typeof(MyRemoteObject), "MyRemoteObject", WellKnownObjectMode.SingleCall); Object sync = new Object(); lock(sync) { Monitor.Wait(sync); } } } } ちなみに、ビルド後のexeをPERMVIEWすると次のようになっていました。 minimal permission set: Not specified optional permission set: Not specified refused permission set: Not specified どうかお力添えのほど、よろしくお願いします。 |
|
投稿日時: 2004-08-05 23:11
自己レスです。この問題が解決しました。
Microsoft.Net Frameworkのバージョンが1.1だとエラーになりません。 テスト機が1.0と1.1の共存している環境でしたので、このような現象が起きました。 ちなみに、クライアントにもリモートオブジェクトが必要です。 配置されていないと、クライアント側でリモートオブジェクトの型がわかりません。 リモートオブジェクトの実装部分は不要としても、最低限インターフェースを定義 して生成したリモートオブジェクトを配置する必要があるそうです。 以上、おさわがせしました。 |
1
