Я пытаюсь разместить элемент управления Windows Forms в C # внутри html-страницы, а затем разместить эту веб-страницу в 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 Configuration Tool для предоставления доступа к неуправляемому коду и создал CodeGroup
, указывающий на сильный ключ, используемый для именования сборки.Я также создал MSI для копирования этих настроек на другие машины (я делал это как на уровне предприятия, так и на уровне машины).
Несмотря на все это, этот код по-прежнему вызывает SecurityPermissionException
, когда янажмите кнопку ...
Я что-то здесь упускаю?