how to determine the assembly evidence at runtime
We tested for binding problems using the SDK tool fuslogvw.exe, but didn't see any binding errors. The other SDK tool we tried was the .NET Framework configuration tool MScorcfg.msc, no luck. As the SDK doesn't ship with the Framework 2.0 we had a trouble to do these tests on every single production machine...let alone that the Configuration tool does not show run-time evidence for a given assembly.
Maybe the enterprise policy had changed for the different zones and this .msi had been pushed without us knowing...
The MScorcfg.msc said otherwise...
This code and extra logs in our application did the trick on determining the evidence passed to the CLR:
private static void LogEvidence()
{
Zone myZone;
Url myURL;
Hash myHash;
Site mySite;
String strEvidence = "";
log(" ===================== Assembly Evidence: ========================= ");
foreach (Object myEvidence in System.Reflection.Assembly.GetExecutingAssembly().Evidence)
{
strEvidence = myEvidence.GetType().ToString();
switch (myEvidence.GetType().ToString())
{
case "System.Security.Policy.Zone":
myZone = (Zone)myEvidence;
strEvidence = strEvidence + ": " + myZone.SecurityZone.ToString();
break;
case "System.Security.Policy.Url":
myURL = (Url)myEvidence;
strEvidence = strEvidence + ": " + myURL.Value;
break;
case "System.Security.Policy.Hash":
myHash = (Hash)myEvidence;
strEvidence = strEvidence + ": " + BitConverter.ToString(myHash.SHA1);
break;
case "System.Security.Policy.Site":
mySite = (Site)myEvidence;
strEvidence = strEvidence + ": " + mySite.Name;
break;
default:
break;
}
log(strEvidence);
}
log(" ===================== End of Assembly Evidence: ==================== ");
}
Labels: .NET
0 Comments:
Post a Comment
<< Home