Je ne sais pas comment résoudre mon problème FxCop.Ne pas exposer indirectement les méthodes avec des demandes de liaison
Ceci est ma fonction intéressé
public void WriteLine(int eventNumber, string message, params object[] args)
{
try
{
rwl.WaitOne();
try
{
sw.WriteLine(DateTime.Now.ToString("dd.MM.yyyy hh:mm:ss", CultureInfo.CurrentCulture) + "\t\t" + eventNumber.ToString(CultureInfo.CurrentCulture) + "\t" + System.Reflection.Assembly.GetCallingAssembly().GetName().Name + "\t" + Process.GetCurrentProcess().Id.ToString(CultureInfo.CurrentCulture) + "\t" + tID + " \t " + message, args);
}
catch (Exception ex)
{
throw new ArgumentException("Cannot write to file " + ex.Message);
}
finally
{
rwl.ReleaseMutex();
}
}
catch (ApplicationException)
{
}
}
Ceci est l'erreur: CriticalError, Certitude 33, pour DoNotIndirectlyExposeMethodsWithLinkDemands Aide: http://msdn.microsoft.com/library/ms182303(VS.100).aspx
Info: « Ne pas envelopper une méthode protégée par un LinkDemand avec une LinkDemand vérifie les autorisations de l'appelant immédiat plutôt que de vérifier les autorisations de tous les appelants dans la méthode qui n'effectue pas de contrôle de sécurité. la pile d'appels. Dans ce cas, les autorisations de la méthode wrapper seront vérifiées. Si l'emballage méthode n'a pas, lui-même, vérifiez les autorisations des appelants plus élevés dans la pile d'appel, le code malveillant peut être en mesure pour exécuter la fonction enveloppée même si elle ne dispose pas la permission de le faire. »
Qu'est-ce que 'rwl'? Vérifiez la source de 'rwl.ReleaseMutex' et' rwl.WaitOne' (et peut-être 'sw.WriteLine') pour leurs attributs de sécurité.Vous devez appliquer ces attributs à votre méthode' WriteLine' Je ne peux pas expliquer le mécanisme dans détails, mais de cette façon, les appelants de votre méthode sont contrôlés, ce que veulent ces attributs 'LinkDemand' Vous devrez faire cela tout le long de la pile d'appels –