Ошибка загрузки сборки при извлечении из кеша AppFabric

Сегодня я столкнулся со странной проблемой при отладке одного из моих проектов. Я использую VS2010/Windows 7 Home Premium.

У меня есть проект, в котором используется кэш Windows Server AppFabric. Я все настроил и создал два разных проекта C# (2 решения) для тестирования конфигурации AppFabric. Имена проектов — «AppFabricServer» и «AppFabricClient». Это просто для тестирования, и соглашение об именах не означает ничего конкретного. Я использую «AppFabricServer» для добавления объектов в кэш AppFabric и проект «AppFabricClient» для извлечения.

Теперь проблема заключается в том, что после запуска «AppFabricServer», а затем я пытаюсь запустить «AppFabricClient» после закрытия «AppFabricServer», я получаю сообщение об ошибке «System.IO.FileNotFoundException: не удалось загрузить файл или сборку «AppFabricServer< /сильный>". Я не понимаю, каким образом проект "AppFabricServer" связан с проектом "AppFabricClient".

То же самое происходит и в обратном порядке - это означает, что после перезагрузки компьютера и если я сначала запускаю проект "AppFabricClient" (у него также есть модуль записи Cache), я не могу запустить проект "AppFabricServer" (у него есть Cache модуль чтения). Я получаю ту же ошибку — «System.IO.FileNotFoundException: не удалось загрузить файл или сборку AppFabricClient».

Исключение выбрасывается в строке, где я пытаюсь получить данные из кеша — когда я вызываю метод Get DataCache.

Может кто-нибудь помочь?


person Thomas    schedule 12.02.2012    source источник
comment
Какие объекты вы сохраняете в кеш? Какова трассировка стека исключения?   -  person svick    schedule 12.02.2012


Ответы (1)


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

Поэтому возьмите объект, который вы сериализуете, из сборки AppFabricServer и поместите его в третью сборку, на которую ссылаются программы AppFabricServer и AppFabricClient. Таким образом, информация о типе CLR будет одинаковой в обоих случаях.

person Craig Wilson    schedule 12.02.2012
comment
@Craig Эта настройка сериализатора задокументирована где-нибудь? - person PhilPursglove; 13.02.2012
comment
я не знаю. Я просто помню, как это происходило где-то в блоге. - person Craig Wilson; 13.02.2012