Проблема возникнет при маршалинге
объект по значению между двумя
домены приложения в том же процессе, где
тип экземпляра является общим,
общий тип шаблона определен
в mscorlib, один или несколько его
экземпляры типов не определены в
mscorlib и многодоменный загрузчик
оптимизация была включена в одном
домен, но не другой.
К сожалению, эта ошибка была обнаружена
слишком поздно и не сделал планку для
продукт V2.0. Есть некоторые
обходные пути однако:
Эта ошибка относится к оптимизированным
версия в процессе,
канал удаленного взаимодействия между приложениями и
поэтому можно избежать путем переключения
эта оптимизация отключена для процесса.
Это может быть достигнуто путем установки
следующая переменная окружения
в командном окне, где тест
будет выполнено:
set complus_UseNewCrossDomainRemoting=0
Или установив
HKEY_CURRENT_USER \ Software \ Microsoft.NETFramework \ UseNewCrossDomainRemoting
значение реестра (DWORD) до 0 (или
версия в HKEY_LOCAL_MACHINE).
Они немного тяжеловесны, но это
также можно обмануть оптимизированного
Путь во избежание только конкретного
звонок, который переводит проблемный
объект. Для этого добавьте пустышку
параметр для вызова (для различных
технические причины оптимизированный путь
пока не реализует параметры).
Вы также можете избежать использования mscorlib
определенный универсальный тип. В репро
представленный случай это достаточно просто
так как вы можете просто подтип List:
[Serializable]
public class MyList<T> : List<T>
{
}
(Просто замените все виды использования List на
MyList).
Наконец, проблема не должна возникать
если оба приложения используют
многодоменная оптимизация. Ты не можешь
установить загрузчик домена по умолчанию
оптимизация после того, как вы уже
запустить его, но вы можете установить его
внешне (я верю через
API неуправляемого хостинга или конфиг
файл, хотя я не эксперт в
либо, извините), либо создав новый
домен (с многодоменной опцией) в пределах
ваш код и передача управления
это (через вызов на объект MBRO в
этот домен).
Извините, если вы уже нашли эту статью в своем поиске, но я не увидел ее в качестве решения.