我不知道如何解决我的FxCop问题。
这是我感兴趣的功能
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)
{
}
}
这是错误:
CriticalError,确定性33,适用于DoNotIndirectlyExposeMethodsWithLinkDemands
帮助:http://msdn.microsoft.com/library/ms182303(VS.100).aspx
信息:"不要将受LinkDemand保护的方法包装起来
一种不执行安全检查的方法。一个
LinkDemand检查立即的权限
调用者而不是检查所有权限
调用堆栈中的调用者。在这种情况下,权限
将检查包装器方法。如果包装
方法本身不检查调用者的权限
在调用堆栈中,恶意代码可能会更高
执行包装函数,即使它缺乏
允许这样做。"
答案 0 :(得分:0)
rwl
是[Mutex] [1]吗?如果是这样,该类将使用[HostProtectionAttribute] [2]进行修饰,以创建HostProtectionPermission的链接需求,这可能是导致规则CA2122触发的原因。
也就是说,FxCop已经特别排除了规则CA2122中的HostProtectionPermission,因为至少FxCop 10.0(因为它并不是真正的安全问题),所以你看到这个规则违规似乎有点奇怪。如果您使用旧版本的FxCop,并且您确信它是导致问题的HostProtectionAttribute,那么抑制违规似乎是非常安全的。否则,您能否提供更多详细信息(FxCop版本,Visual Studio版本,目标框架版本,sw
和rwl
类型),以便更容易识别违规原因?