我试图在网络驱动器上使用exe中的反射调用一个方法,但我得到了以下异常。
2013-07-12 11:58:54 AM发生以下错误:调用目标引发异常。内部异常:System.Security.SecurityException:请求:System.Security.SecurityException类型的许可,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089‘失败。在System.Security.CodeAccessSecurityEngine.Check(Object需要时,StackCrawlMark& stackMark,布尔isPermSet) at System.Security.CodeAccessPermission.Demand() at System.Security.CodeAccessPermission.Demand() at System.IO.FileStream.Init(字符串路径、FileMode模式、FileAccess访问、Int32权限、布尔值、FileShare共享、Int32 bufferSize、FileOptions options、SECURITY_ATTRIBUTES secAttrs、String msgPath、Boolean )在(字符串路径)处(字符串路径、stackMark模式、access、共享、、选项)在System.IO.StreamWriter..ctor(字符串路径,布尔追加,编码编码,Int32 bufferSize)的System.IO.StreamWriter..ctor(字符串路径,布尔追加,编码编码)在System.IO.File.AppendAllText(字符串路径,字符串内容,编码)在System.IO.File.AppendAllText(字符串路径,字符串内容)在ccc.ControllerBO.ExecuteTest()
我已经阅读了安全设置,但我不想安装调用EXE,无法找到解决方案。
我能做些什么来克服这个问题呢?
发布于 2013-07-12 11:04:29
您可以创建证据实例并将其传递给LoadForm方法,如下所示:
#if NET35
var evidence = new System.Security.Policy.Evidence();
evidence.AddHost(new System.Security.Policy.Url(assemblyPath));
evidence.AddHost(new System.Security.Policy.Zone(System.Security.SecurityZone.MyComputer));
Assembly assembly = Assembly.LoadFrom(assemblyPath, evidence);
#elif NET40
var evidence = new System.Security.Policy.Evidence();
evidence.AddHostEvidence(new System.Security.Policy.Url(assemblyPath));
evidence.AddHostEvidence(new System.Security.Policy.Zone(System.Security.SecurityZone.MyComputer));
Assembly assembly = Assembly.LoadFrom(assemblyPath);
#endif其中assemblyPath -是一个与程序集一起文件的完整路径(例如在网络驱动器上)。
https://stackoverflow.com/questions/17613360
复制相似问题