Включение Silverlight вне браузера приводит к прерыванию работы приложения в браузере

В настоящее время я разрабатываю небольшое приложение в Silverlight, и недавно, чтобы опробовать его, я включил развертывание вне браузера для своего приложения. Однако теперь, когда я отключил этот параметр, при запуске приложения выдается исключение, как только оно завершает загрузку.

Необработанное исключение («Необработанная ошибка в приложении silverlight. Код: 4004 Категория: ManagedRuntimeError Сообщение: System.Reflection.TargetInvocationException: исключение произошло во время операции, что сделало результат недействительным.

Однако, если я просто открою TestPage.html в браузере, приложение по-прежнему будет работать так же, как и раньше.

Любые идеи? Спасибо


person MarkNach    schedule 12.07.2011    source источник
comment
Странно! Вы пытались установить точку останова в начале вашего кода Silverlight и посмотреть, сможете ли вы получить строку, на которой он не работает?   -  person Nick Heidke    schedule 12.07.2011
comment
Я сделал это и получил ошибку в App.xaml.cs сразу после конструктора. Я создал новый проект silverlight и скопировал все файлы .xaml и .cs, и он снова работает как обычно. Еще было бы интересно найти проблему.   -  person MarkNach    schedule 12.07.2011
comment
Опубликуйте InnerException этого исключения. Вот что действительно пошло не так.   -  person Hans Passant    schedule 12.07.2011
comment
Произошла ошибка при попытке сделать запрос к URI "(моя служба wcf)". Это могло произойти из-за попытки доступа к сервису в междоменном режиме без надлежащей междоменной политики или политики, которая не подходит для сервисов SOAP. Возможно, вам потребуется связаться с владельцем службы, чтобы опубликовать файл междоменной политики и убедиться, что он позволяет отправлять заголовки HTTP, связанные с SOAP. Эта ошибка также может быть вызвана использованием внутренних типов в прокси-сервере веб-службы без использования атрибута InternalsVisibletoAttribute.   -  person MarkNach    schedule 12.07.2011


Ответы (2)


Например, попробуйте ввести следующую строку в методе Application_UnhandledException файла App.Xaml.cs (код программной части App.Xaml) «MessageBox.Show (e.ExceptionObject.Message);». Это может дать вам представление о том, что идет не так, если к отладчику еще не подключен браузер. Купите путь. В Visual Studio вы можете вручную прикрепить отладчик к своему браузеру в меню отладки -> Присоединить к процессу ..., а затем, например, выбрать процесс с типом «Silverlight, x86».

    private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
    {
        MessageBox.Show(e.ExceptionObject.Message);
        // If the app is running outside of the debugger then report the exception using
        // the browser's exception mechanism. On IE this will display it a yellow alert 
        // icon in the status bar and Firefox will display a script error.
        if (!System.Diagnostics.Debugger.IsAttached)
        {

            // NOTE: This will allow the application to continue running after an exception has been thrown
            // but not handled. 
            // For production applications this error handling should be replaced with something that will 
            // report the error to the website and stop the application.
            e.Handled = true;
            Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); });
        }
    }
person Magiel    schedule 12.07.2011

Я нашел проблему. Я не уверен, почему это требовалось для активации вне браузера и последующего возврата, но добавление файла ClientAccessPolicy.xml в проект .web

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="SOAPAction">
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

исправил проблему.

person MarkNach    schedule 19.07.2011