HTML ページ内の C# で Windows フォーム コントロールをホストし、その Web ページを IIS でホストして、他のクライアント マシンからアクセスできるようにしようとしています。問題は、ユーザー コントロールがアンマネージ コードを使用しているSecurityPermissionException
ため、別のマシンを使用してアクセスするときにトリガーされることです。
エラーを特定するために、コードを基本的な例に落とし込むことができましたが、これに対する答えが見つからないようです。
これが私のユーザーコントロールです:
// To handle strong named assembly
[assembly: AllowPartiallyTrustedCallers]
namespace WinFormsHTMLControl
{
[SecurityPermissionAttribute(SecurityAction.Assert, UnmanagedCode = true)] // to allow assertions regarding unmanaged code permissions
public partial class HelloWorldControl : UserControl
{
#region Methods/Consts for Embedding a Window
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
#endregion
public HelloWorldControl()
{
InitializeComponent();
}
private void btnClick_Click(object sender, EventArgs e)
{
new SecurityPermission(PermissionState.Unrestricted).Assert();
IntPtr picBoxHandle = FindWindow("IEFrame", "Internet Explorer");
lblMessage.Text = picBoxHandle.ToString();
SecurityPermission.RevertAssert();
}
}
}
キーでアセンブリに署名し、アンマネージ コードへのアクセスを許可するために .NET 構成ツールでアクセス許可セットを作成しCodeGroup
、アセンブリの名前付けに使用される強力なキーへのポイントを作成しました。これらの設定を他のマシンにコピーするために、MSI も作成しました (エンタープライズ レベルとマシン レベルの両方でこれを行いました)。
このすべてにもかかわらず、このコードSecurityPermissionException
はボタンをクリックするとトリガーされます...
ここで何か不足していますか?