Я пытаюсь вызвать функцию в компоненте Silverlight 4, чтобы открыть диалоговое окно файла и загрузить файл на сервер. В Silverlight все работает хорошо, но я бы хотел вызвать компонент из JavaScript. Поэтому я вызываю обработчик нажатия кнопки из C # -функции, которая является [ScriptableMember]. Я получаю следующую ошибку при вызове функции:
System.Security.SecurityException: Dialogs must be user-initiated.
at System.Windows.Browser.ManagedObjectInfo.Invoke(ManagedObject obj, InvokeType
invokeType, String memberName, ScriptParam[] args) at
System.Windows.Hosting.ManagedHost.InvokeScriptableMember(IntPtr pHandle, Int32 nMemberID,
Int32 nInvokeType, Int32 nArgCount, ScriptParam[] pArgs, ScriptParam& pResult,
ExceptionInfo& pExcepInfo)
Я основал свой код на учебнике Тима Хойера, который можно найти здесь: http://www.silverlight.net/learn/videos/silverlight-videos/openfiledialog-and-file-upload/
Я понимаю, почему выдается ошибка, вроде как «щелчок» от пользователя выполняется в JavaScript и, вероятно, не передается Silverlight. Для Silverlight это просто вызов функции.
Это новая политика от Silverlight 4? Можно ли по-прежнему использовать Silverlight за экранами для загрузки файла? Любая помощь приветствуется.