马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

C# 使用Assembly反射加载程序集报错An attempt was made to load...解决办法

  [复制链接]
查看3550 | 回复4 | 2019-10-21 14:32:40 | 显示全部楼层 |阅读模式
随着学习的深入,涉及到的知识返回会越来越广,就会遇到各种问题,此贴为记录分享帖;
背景:
代码书写没问题,使用Assembly.LoadFile(DLLPath)加载DLL在部分电脑上报错,报错图如下:
(上传图片提示附件文件无法保存,此处调用了网络图片)

百度翻译:试图从网络位置加载程序集,这可能会导致在早期版本的.NET Frameowork中对程序集进行沙盒处理。默认情况下,此版本的.NET FromWork不启用CA策略,因此此加载可能很危险。如果此加载不打算对程序集进行沙盒处理。请启用“从远程源加载”开关。
大概意思是:由于电脑的安全性配置等,无法加载

现整理出俩种解决办法:
办法一(亲测可用):
在config配置中,添加设置

[C#] 纯文本查看 复制代码
<runtime>
    <loadFromRemoteSources enabled="true"/>
</runtime>


完整config示例:

[C#] 纯文本查看 复制代码
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <loadFromRemoteSources enabled="true"/>
  </runtime>
</configuration>


办法二(未测试):
Assembly类有一个静态函数UnsafeLoadFrom,这个函数在加载一个assembly的时候,不会进行一些安全检查

[C#] 纯文本查看 复制代码
Assembly a = Assembly.UnsafeLoadFrom(DLLPath);





ibcadmin | 2019-10-22 08:52:00 | 显示全部楼层
+1
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
sfasf2 | 2019-10-22 10:45:37 | 显示全部楼层
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则