- PR -

.NETリモーティングでアクセス許可の要求に失敗する

1
投稿者投稿内容
あき
ベテラン
会議室デビュー日: 2003/07/23
投稿数: 72
投稿日時: 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


どうかお力添えのほど、よろしくお願いします。
あき
ベテラン
会議室デビュー日: 2003/07/23
投稿数: 72
投稿日時: 2004-08-05 23:11
自己レスです。この問題が解決しました。
Microsoft.Net Frameworkのバージョンが1.1だとエラーになりません。
テスト機が1.0と1.1の共存している環境でしたので、このような現象が起きました。

ちなみに、クライアントにもリモートオブジェクトが必要です。
配置されていないと、クライアント側でリモートオブジェクトの型がわかりません。
リモートオブジェクトの実装部分は不要としても、最低限インターフェースを定義
して生成したリモートオブジェクトを配置する必要があるそうです。

以上、おさわがせしました。
1

スキルアップ/キャリアアップ(JOB@IT)