Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятная проблема с .NET и COM, SerializationException 
V
    Опции темы
DragonFire
Дата 5.7.2009, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: 1
Всего: 9



День добрый всем.

Итак пишу COM сервер, который обрабатывает некие сообщения, поступающие от внешнего приложения. 
Есть два интерфейса (примеры немного упрощены здесь и далее):
Код

    [GuidAttribute("тут гуид")]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    public interface ICallBack
    {
        void MyEvent(string Info);
        void RegisterEvent(IEvents MyEvents);
    }

    public interface IEvents
    {
        void MyEvent(string Info);
    }

И два класса, что реализуют эти интерфейсы:
Код

    [EventTrackingEnabledAttribute(true)]
    [Guid("тут гуид")]
    [ClassInterface(ClassInterfaceType.None)]
    public class MyCallBack : ServicedComponent, ICallBack
    {
        private IEvents _Events;
        public void RegisterEvent(IEvents MyEvents)
        {
            _Events = MyEvents; 
        }
        public void MyEvent(String Info)
        {
            _Events.MyEvent(Info);
        }
    }

    public class MyEvents : IEvents
    {
        public void MyEvent(string Info)
        {
            System.Windows.Forms.MessageBox.Show(Info);
        }
    }

Все это лежит в одной сборке, которая зарегана в системе. Далее в основной программе пишем такой код:
Код

     MyCallBack _CallBack = new MyCallBack();
     MyEvents _Events = new MyEvents();
     _CallBack.RegisterEvent(_Events);            

На строке _CallBack.RegisterEvent(_Events) на этапе выполнения вылазит ошибка что класс MyEvents не помечен как сериализуемый. 
Тогда помечаем его атрибутом [Serializable()]. После этого на той же стрке вылазит ошибка 
System.Runtime.Serialization.SerializationException was unhandled
Message="Unable to find assembly"


Я не понимаю как такое может быть, если оба класса MyEvents и MyCallBack лежат в одной сборке. Причем как СОМ - сервер она прекрасно работает и обрабатывает все запросы. 

Заранее спасибо!


--------------------
PM MAIL ICQ   Вверх
DragonFire
Дата 6.7.2009, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: 1
Всего: 9



Отвечаю сам себе smile
Необходимо было зарегестрировать COM сборку в GAC и после этого в реестре, вот так:
Код

"C:\Program Files\Microsoft.NET\SDK\v2.0\Bin\gacutil" /i MyCallBack.dll
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm" MyCallBack.dll
pause

После этого залезть в диспетчер задач и учить dllhost.exe - все что запущены (обычно их два - от имени System и от пользователя).
Теперь при запуске приложения все работает.

Может кому-нибудь пригодиться...

Это сообщение отредактировал(а) DragonFire - 6.7.2009, 09:45


--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0409 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.