Что контролирует данные текущего домена приложения?У AppDomain Evidence нет зоны?
var evidence = Thread.GetDomain().Evidence;
Что контролирует, если оно является нулевым или ненулевым, и что определяет его содержание?
Когда мое приложение запрашивает эти хоста доказательства объектов из области доказательства
var z = evidence.GetHostEvidence<Zone>
var p = evidence.GetHostEvidence<Publisher>
var s = evidence.GetHostEvidence<Site>
var n = evidence.GetHostEvidence<StrongName>
var u = evidence.GetHostEvidence<Url>
он появляется, как если бы они иногда все нуль при выполнении некоторых условий. Причина, по которой я считаю, что это исключение, вызванное внутри IsolatedStorage._GetAccountingInfo(...)
, где, просматривая код в рефлекторе, ясно, что это исключение будет выдаваться только в том случае, если доказательство домена содержит null для всех вышеупомянутых объектов доказательства объекта. Это приведет к невозможности инициализации изолированного хранилища.
К сожалению, я не могу воспроизвести его в своей собственной системе. Значение зоны, например, всегда будет правильным значением, говорящим «Мой компьютер», поэтому я изо всех сил пытаюсь решить эту проблему.
Что контролирует содержимое этих значений в домене приложения по умолчанию для настольного приложения Windows Forms?
Он инициализируется хостом CLR, когда он создает основной домен. Тяжелые изменения в .NET 4 с внедрением EvidenceBase, поэтому я бы поискал необычные сценарии хостинга, которые по-прежнему используют устаревшие доказательства. Включение ClickOnce и одновременная активация COM-by-side COM. –
Спасибо, Ханс. Это приложение .NET 4 winforms, развернутое через обычный MSI. Таким образом, проблемы возникают при нормальном выполнении на обычных машинах с .NET4. В чем разница между доказательствами домена и собранием? В моих собраниях я ожидаю, что большинство доказательств будет отсутствовать, поскольку оно не является сильным. –