Подтвердить что ты не робот

Ошибка HRESULT E_FAIL была возвращена из вызова COM-компонента

В приложении Silverlight 4; что означает эта ошибка?:

"Ошибка HRESULT E_FAIL была возвращена из вызова COM-компонента."

Это очень общая ошибка. Отладчик VS не указывает на точное местоположение ошибки при отладке.

4b9b3361

Ответ 1

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

В моем случае я скопировал образец XAML из Интернета, чтобы начать работу с Silverlight Toolkit 4. В этом примере XAML содержала простую кнопку с обработчиком событий click, которая не относилась к любому обработчику, который действительно существовал в моем код позади. Сначала я не заметил эту простую проблему, потому что компилятор не дал мне сообщение об ошибке, я только что увидел, что сообщение об ошибке "Ошибка HRESULT E_FAIL было возвращено из вызова COM-комьюнити" выше во время выполнения. Только когда я изолировал свой образец XAML, скопировав его в совершенно новое приложение Silverlight без какого-либо другого контента, что реальная основная проблема была обнаружена во время компиляции.

Итак, если у вас есть такое же сообщение об ошибке во время выполнения, я советую проверить ваш XAML, чтобы все ошибки, которые вы ожидали, должны были быть отобраны во время компиляции, но которые по какой-то причине оказались описанная выше ошибка времени выполнения. Чтобы отлаживать, вы можете сделать то, что я сделал, и изолировать код, вызывающий ошибку, в автономном приложении Silverlight без какого-либо другого контента, и посмотреть, как, как и я, вы получите более полезное сообщение об ошибке, которое поможет вам.

НТН.

Ответ 2

Есть много решений, но это единственное решение, которое несколько раз работало для меня. Было проверено VS2012 VS2013 и VS2015, я считаю, что он работает одинаково хорошо для всех. Просто выполните следующие шаги, чтобы исправить эту проблему

Шаг 1: Закройте Visual Studio
 Шаг 2. Удалите *.csproj.user и *. Suo файлы
 Шаг 3. Повторно запустите VS и попробуйте снова запустить проект в режиме отладки.

ПРИМЕЧАНИЕ. Эта ситуация возникает, когда несколько пользователей, работающих с одинаковыми проект с различными версиями VS .suo не поддерживается для круглого отключения между двумя версиями VS.It содержит информацию о том, какие настройки выбрал текущий пользователь для его/ее работы VS окружающая среда.

Ответ 3

В моей ситуации:

Я создаю

class MyControl : ContentControl {
}

По умолчанию класс не является общедоступным, и XAML не может его загрузить и исключить исключение

Ошибка HRESULT E_FAIL была возвращена из вызова COM-компонента

Просто измените область видимости класса и исчезните.

Надеюсь на эту помощь.

PS. Microsoft должна предоставлять больше информации, чем просто бросать сообщение о загадочной ошибке без какой-либо трассировки стека.

Ответ 4

У меня также была эта ошибка, и я обнаружил, что эта проблема связана с тем, что не добавлены все необходимые сборки в ваш проект. В моем случае я использовал UserControl с параметром Silverlight Toolkit, и я не добавил эту ссылку. Я просто добавил ссылку и все решило:)

Ответ 5

У меня была эта ошибка, используя текущие элементы управления SL4 Telerik. Аналогичная проблема была сообщена здесь с решением... рода. Проблема заключается в том, что Expression Blend управляет кешем элементов управления.

Ответ 6

Здесь один из способов генерации этой ошибки, на который я наткнулся сегодня. У нас есть следующая кнопка в XAML:

    <Button x:Name="button" Click="Button_Click" Content="Click me" />

Обработчик событий, который обрабатывает событие Click кнопки, выглядит следующим образом:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        button.Margin = new Thickness(0, double.NaN, 0, 0);
    }

Когда я нажимаю на кнопку, я получаю вышеупомянутую ошибку. Такая же ошибка возникает, если заменить NaN на PositiveInfinity или NegativeInfinity.

Интересно, что я получаю другое сообщение об ошибке, если первый параметр конструктора Thickness содержит NaN вместо второго.

Ответ 7

У меня была эта ошибка из-за проблем с XAML. Странно, что у меня отсутствовали ресурсы, используемые атрибутами Style и Margin, что означает, что приложение работает нормально, и даже resharper сообщает только "подсказку".

Как только я очистил эти проблемы, моя "ошибка HRESULT E_FAIL была возвращена из вызова COM-компонента". исчез. Как говорили другие, это неопределенная ошибка, которую очень сложно отладить. В этом случае я унаследовал большой проект с 100 сообщениями VS и ReSharper с различной степенью тяжести - отсутствующие StaticResource атрибуты Style не были отмечены мной первым!

Ответ 8

У меня была эта ошибка на моей странице xaml и не было синтаксических ошибок. Уборка и реорганизация проекта решили мою проблему. FYI...

Ответ 9

Пул приложений IIS должен запускаться как учетная запись, у которой есть запрос доступа к Team Foundation Server. Это исправляет проблему для меня.

Ответ 10

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

Soulution - это просто, но требуется время:) Очистите проект и перестройте все. Когда вы снова войдете в настройку, вы увидите, что все в порядке!

Надеюсь, это поможет!

Если вы недавно заметили это исключение, попробуйте переустановить silverlight sdk4.

Ответ 11

Это проблема безопасности и разрешений. Изучите IIS и убедитесь, что Integrated Security включена. Затем установите уровень защиты приложений на средний (если он высок, это может быть результатом). Затем проверьте файл Web.Config. Удостоверьтесь, что олицетворение выключено.

Это должно помочь.

Ответ 12

У меня была эта проблема, когда я кодировал видео и аудио в реальном времени (используя выражение Microsoft), а следующий фрагмент кода генерирует исключение случайно:

// Set bitrate
liveJob.OutputFormat.VideoProfile.Bitrate = new ConstantBitrate(2500);

// Set Video size
liveJob.OutputFormat.VideoProfile.Size = new Size(320,240); 

пока не выясню, что вторая строка вызывает исключение, в то время как первый из них все еще работает в другом потоке!

и, конечно, это была моя ошибка - я вызвал метод в коде, и он также был вызван событием Click...

Ответ 13

У меня было это исключение и я с ума сошел. Я бы посоветовал вам проверить, недавно ли вы установили компонент, который мог иметь конфликтующие элементы пространства имен. В моем случае я установил набор инструментов для телефона Windows, в котором были элементы, которые были аналогично названы с набором инструментов для инструментов на телефоне Windows. Asap я удалил это из диспетчера пакетов Nuget, все вернулось к норме.

Ответ 14

Вот что НАКОНЕЧНО исправляло эту проблему для нас при попытке использовать библиотеку MICROSOFT.TEAMFOUNDATION при запросе Team Foundation Server:

  • Team Foundation Explorer должен быть установлен с исправленной версией, на которую ссылается приложение.
  • MSDTC - Конфигурация. (См. Конфигурацию DTC ниже)
  • Пул приложений IIS должен запускаться как учетная запись, у которой есть запрос доступа к Team Foundation Server
  • Пул приложений IIS должен запускаться как учетная запись, которая имеет COM-доступ на сервере IIS (для этого у нас есть выделенный сервер, поэтому мы сделали идентификатора пользователя администратором на локальном сервере).
  • Брандмауэр должен быть выключен или настроен, чтобы разрешить COM-доступ для службы DTC.

Конфигурация DTC ----

  • Нажмите "Пуск", выберите "Выполнить", введите dcomcnfg и нажмите "ОК", чтобы открыть "Службы компонентов".
  • В дереве консоли нажмите, чтобы развернуть Службы компонентов, нажмите, чтобы развернуть Компьютеры, нажмите, чтобы развернуть Мой компьютер, и нажмите, чтобы развернуть диспетчер распределенных транзакций.
  • Щелкните правой кнопкой мыши Local DTC и выберите "Свойства", чтобы отобразить диалоговое окно "Local DTC Properties".
  • Перейдите на вкладку "Безопасность".
  • В разделе "Параметры безопасности" выберите "Доступ к сети DTC".
  • В разделе "Клиент и администрация" выберите "Разрешить удаленные клиенты" и "Разрешить удаленное администрирование".
  • В разделе "Связь с транзакционным менеджером" выберите "Разрешить входящие" и "Разрешить исходящие".
  • В разделе "Связь с транзакционным менеджером" выберите "Требуется взаимная проверка подлинности" (если на всех удаленных компьютерах установлена ​​Windows Server 2003 с пакетом обновления 1 (SP1) или Windows XP с пакетом обновления 2 (SP2) или выше), выберите "Требуется аутентификация входящего звонка" (если выполняется MSDTC в кластере) или выберите Нет Аутентификация Требуется, если некоторые из удаленных компьютеров находятся в предварительном Windows Server 2003 с пакетом обновления 1 (SP1) или до Windows XP с пакетом обновления 2 (SP2) для Windows XP. Не требуется проверка подлинности.

Надеюсь, это поможет.

Ответ 15

Для меня это была ошибка анализа синтаксиса XAML. В шаблоне данных у меня был дополнительный S между двумя тегами (вероятно, потому, что я нажал S вместо CTRL + S). Например...

<DataTemplate>
   <Border/>s
</DataTemplate>

Итак, я бы предложил вам искать плохо отформатированный XML в представлении, который вызывает это исключение при отображении.

Ответ 16

Моя проблема - отсутствующий стиль. Я переопределил шаблон управления с помощью специальной кисти:

<Style x:Key="MyCustomStyle" TargetType="Thumb">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Thumb">
                ....
                <TextBlock Foreground="{StaticResource MyCustomBrush}"

и не было моего определения MyCustomBrush, например:

<SolidColorBrush x:Key="MyCustomBrush" Color="#FFAC0909"/>

а затем BOOM, приложение не запускалось, и я получил сообщение об ошибке COM.

Ответ 17

Ну, я почти собирался съесть свой компьютер. Наконец, я выясняю, что проблема заключается в том, что я НЕ МОЖЕТ ИЗМЕНИТЬ АВАРИЙНЫЙ УДАЛИТЬ один параметр одного параметра Margin объекта Image на странице XAML, orz..

Margin="0,-20,0" 

который должен быть

Margin="0,-20,0,0" 

Очевидно, я не понял, что я когда-либо модифицировал что-либо из XAML, поэтому я немного исказил код за "немного".

К счастью, я нашел этот пост и перепроверял все, что включает в себя страницу XAML.. это было... что-то...

Ответ 18

Для меня я сузил его до элемента управления SplitButton, который я загрузил CodePlex несколько веков назад. Я обновил решение от Silverlight 4 до Silverlight 5 и получил эту ошибку. Я смог сузить его, прокомментировав XAML всем элементам управления, а затем раскомментировал их один за другим, пока ошибка не возникнет снова:

System.Reflection.TargetInvocationException was unhandled by user code
  Message=Exception has been thrown by the target of an invocation.
  StackTrace:
       at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
       at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
       at System.Delegate.DynamicInvokeImpl(Object[] args)
       at System.Delegate.DynamicInvoke(Object[] args)
       at Homexaml_3.BindingOperation(Object BindingState, Int32 , Action )
  InnerException: 
       Message=Error HRESULT E_FAIL has been returned from a call to a COM component.
       StackTrace:
            at MS.Internal.XcpImports.CheckHResult(UInt32 hr)
            at MS.Internal.XcpImports.UIElement_Measure(UIElement element, Size availableSize)
            at System.Windows.UIElement.Measure(Size availableSize)

Что исправлено, вручную удалили устаревшие ссылки System.Windows.Control и System.Windows.Controls.Toolkit, а затем повторно добавили их из папки SDK Silverlight 5.

Надеюсь, что это поможет кому-то (и поможет мне!), если это произойдет снова через несколько месяцев после дороги.

Ответ 19

Недавно я получил эту ошибку в VS 2013 для проекта Silverlight 5. Ничто из этого не помогло мне. Как ни странно, это была проблема с потоками (обычно я использую исключение, объясняющее это, если я пытаюсь создать UIElements в фоновом потоке по ошибке).

Обертка моего кода, который добавляет UIElements к MainPage с Dispatcher.BeginInvoke, решил проблему:

 Dispatcher.BeginInvoke(() =>
 {
      // your code
 });

Ответ 20

В большинстве случаев трудно понять, где именно проблема находится, особенно в XAML. Еще один способ узнать, где его отказ - выполнить следующие шаги.

  • Скопировать исключение, которое оно отображает в окне вывода Visual Studio. пример. System.Reflection.TargetInvocationException
  • Нажмите "Отладка" → "Исключения". В нем отображается список исключений.
  • Нажмите кнопку "Добавить..".
  • Вставить исключение, скопированное в шаге 1 в текстовое поле. В раскрывающемся списке выберите "Исключения времени обычного языка".
  • Нажмите кнопку "ОК". Выбранное исключение будет выделено. Обязательно установите флажок напротив исключения. Нажмите кнопку "ОК" еще раз, чтобы закрыть диалоговое окно.
  • Теперь запустите приложение в режиме отладки. Приложение прерывается, когда возникает исключение. Иногда также в ассемблерном режиме.
  • На данный момент у вас есть два варианта:

    • Нажмите "Показать детали экрана исключения". Вкопаться внутренние исключения, пока вы не поймете, откуда происходящий.

    • Просмотрите стек вызовов, чтобы узнать, какой код строки вы вызываете это исключение. Это даст ключ к решению проблемы.

Ответ 21

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

В моем конкретном случае, казалось бы, проблема с пространствами имен. Мой UserControl находится в своем собственном пространстве имен (с творческим названием "UserControls" ). Мои страницы находятся в собственном пространстве имен ( "Страницы" ). Я хотел ссылаться на определение перечисления в пространстве имен Pages из моего UserControl, поэтому я просто добавил оператор using: using MySolution.Pages;. Достаточно тривиально, и я не хотел верить, что это была проблема. Но когда я удалил эту инструкцию using и просто создал перечисление в моем пространстве имен UserControls, voila, больше не было ошибки HRESULT, а также в качестве дополнительного бонуса мои свойства зависимостей, определенные в UserControl, которые в противном случае таинственно не отображались в Xaml intellisense, внезапно были там и готовы к использованию.

Я подозреваю, что основной причиной этого в моем случае была какая-то проблема с круговой ссылкой. И поскольку не было более конкретной ошибки, чтобы связать эту информацию со мной, она просто перетасовалась в эту ошибку HRESULT E_FAIL Com.

Ответ 22

Я исправил эту ошибку, удалив файл XAML и добавив новый из нового элемента. Затем я вставил коды XAML, которые были там в старом файле.

Ответ 23

В моем случае это было, когда я попытался импортировать базу данных в проект SSDT, но эта база данных уже была в проекте, но была пуста. Я только что обновил свой проект с помощью Tools -> SQL server -> New schema comparsion. Источник - база данных, целевой проект. Сравнить - обновить.

Надеюсь, что это поможет кому-то.