Clipboard_AccessNotAllowed ошибка в Silverlight 4 - PullRequest
0 голосов
/ 12 июля 2011

Я работаю с Silverlight 4.0 и использую класс Clipboard (System.Windows) для копирования ошибок с сайта.

На моем компьютере все работает нормально, но когда я пытаюсь получить к нему доступ с другого компьютера, появляется следующее сообщение об ошибке:

"[Clipboard_AccessNotAllowed] Аргументы: Строки ресурса отладки недоступны. Часто ключ и аргументы предоставляют достаточную информацию для диагностики проблемы. Смотри http://go.microsoft.com/fwlink/?linkid=106663&Version=4.0.60310.0&File=System.Windows.dll&Key=Clipboard_AccessNotAllowed"

Мой код как ниже:

    private void SetMessageToClipboard(string sMessage)
    {
        try
        {
            Clipboard.SetText(sMessage);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

Эта ошибка исчезнет, ​​если вы выберете «Запомнить мой ответ» во всплывающем окне Silverlight.

Это связано с файлом ClientPolicy.XML? Я не добавил это. Но я не нашел ничего в ClientPolicy.XML, которое может быть полезным для меня.

Пожалуйста, предложите.

Ответы [ 2 ]

1 голос
/ 13 июля 2011

Вы уверены, что не нажали «Запомнить мой ответ» на своей машине? Один из способов выяснить это на собственной машине - очистить кеш браузера. Я не думаю, что клиентская политика не имеет к этому никакого отношения. Это клиентское приложение, которое пытается получить доступ к клиентскому буферу обмена. Приложение silveright работает с частичным доверием в вашем браузере (поэтому это сообщение с подтверждением появляется в SetText и GetText).

Вопрос о предоставлении доступа к буферу обмена также задуман. Пользователь всегда должен давать разрешение. Запись в буфер обмена возможна только в том случае, если действие является действием пользователя (например, нажатие кнопки).

Чтобы избежать появления этого сообщения, вы можете попробовать запустить его из браузера с повышенными разрешениями, чтобы пользователь не получал приглашения, но ему будет предложено запустить приложение с повышенными разрешениями;)

Так что я думаю, что вы все равно застряли с диалоговым окном подтверждения для пользователя. Это не очень большое дело, как только они запомнят свой выбор, им больше не будет предложено.

0 голосов
/ 11 марта 2013

Вот решение, но оно работает только для IE

Microsoft.LightSwitch.Threading.Dispatchers.Main.BeginInvoke(() => HtmlPage.Window.Eval("window.clipboardData.setData('Text','testtestest')"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...