- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用以下代码:
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => {
var name = args.Name + ".dll";
using (var input = Assembly.GetExecutingAssembly()
.GetManifestResourceStream(name)) {
Assembly dll = input != null
? Assembly.Load(input.ToArray())
: null;
return dll;
}
};
在本地的所有情况下,它似乎工作得很好,但是一个客户端在加载包含的 dll 时遇到问题(他们没有源代码访问权限)。
在使用这种类型的动态 dll 加载时,是否存在我应该注意的任何信任问题或陷阱?
Medium Trust 问题似乎不是问题,但是我们生成的 dll 无论如何都需要 Full Trust。我想这可能归结为安全权限之类的。
在查看文档后,我再次注意到我之前跳过的一行,我认为它与我的问题有关。
“从 .NET Framework 4 开始,将为所有程序集引发 ResolveEventHandler 事件,包括资源程序集。在早期版本中,不会为资源程序集引发事件。如果操作系统是本地化后,处理程序可能会被调用多次:为回退链中的每个区域性调用一次。”
而在 3.5 中则不是。我会在确认后发布更新。
最佳答案
嗯,没有任何细节很难诊断;但是,我建议对上面的代码进行一些更改:
args.Name 实际上是一个完整的程序集名称,而不仅仅是一个简单的名称,还可以包含版本等。将此值传递给 AssemblyName 的构造函数只会解析简单的名称。我怀疑这是您遇到的问题。
您应该在加载程序集位时传播当前域证据。这可能是您在现场看到的问题,但也可能不是。
不要使用执行程序集,而是通过对该程序集中包含的类型的显式引用来访问包含资源的正确程序集。只需替换下面示例中的“THIS_CLASS”。这是我对您遇到的问题的根本原因的最佳猜测。
您应该继续将此方法的结果缓存到全局字典中。为什么?可以调用您多次加载同一个程序集,并且每次调用您都必须返回程序集的相同实例。您的示例一次又一次地加载程序集。
添加详细的日志记录,记录您正在寻找的程序集、您尝试加载的资源名称、您从中加载资源的程序集、流是否为空、Load() 方法的结果等。
static Dictionary<String, Assembly> _assemblies = new Dictionary<String, Assembly>(StringComparer.OrdinalIgnoreCase);
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
Assembly dll;
var name = new AssemblyName(args.Name).Name + ".dll";
if(!_assemblies.TryGetValue(name, out dll))
{
Assembly res = typeof(THIS_CLASS).Assembly;
using (var input = res.GetManifestResourceStream(name))
{
if (input == null)
{
LogWrite("Assembly {0} does not contain {1}", res, name);
return null;
}
if (null == (dll = Assembly.Load(input.ToArray(), AppDomain.CurrentDomain.Evidence)))
{
LogWrite("Assembly {0} failed to load.", name);
return null;
}
LogWrite("Loaded assembly {0}.", name);
_assemblies[name] = dll;
return dll;
}
}
return dll;
};
关于c# - AppDomain.CurrentDomain.AssemblyResolve 可能存在的信任问题或我应该注意的其他问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4588125/
我正在运行PHP脚本,并继续收到如下错误: 注意:未定义的变量:第10行的C:\ wamp \ www \ mypath \ index.php中的my_variable_name 注意
我正在运行PHP脚本,并继续收到如下错误: 注意:未定义的变量:第10行的C:\ wamp \ www \ mypath \ index.php中的my_variable_name 注意
我正在运行PHP脚本,并继续收到如下错误: 注意:未定义的变量:第10行的C:\ wamp \ www \ mypath \ index.php中的my_variable_name 注意
我正在运行一个PHP脚本,并且继续收到如下错误:。第10行和第11行如下所示:。这些错误消息的含义是什么?。为什么他们突然出现了?我多年来一直使用这个脚本,从来没有遇到过任何问题。。我该怎么修理它们呢
当我在 flutter clean 之后运行 flutter run 或 debug my code 时显示此错误 Note: C:\src\flutter.pub-cache\hosted\pub.
My Goal: To fix this error and be able to run my app without an error. Error Message: Note:D:\Learni
前言:今天在解决一个问题时,程序总是不能输出正确值,分析逻辑思路没问题后,发现原来是由于函数传递导致了这个情况。 LeetCode 113 问题:给你二叉树的根节点
我正在 R 中开发一个包,当我运行时 devtools::check()我收到以下说明。 checking DESCRIPTION meta-information ... NOTE Malforme
获得通知和警告波纹管 Notice: Use of undefined constant GLOB_BRACE - assumed 'GLOB_BRACE' in /var/www/html/open
我正在准备一个 R 包以提交给 CRAN。 R CMD 检查给了我以下注意: Foreign function calls to a different package: .Fortran("cinc
我正在尝试从以下位置获取数据: http://api.convoytrucking.net/api.php?api_key=public&show=player&player_name=Mick_Gi
我有这段代码,但我不明白为什么我仍然有这个错误,我已经尝试了所有解决方案,但无法解决这个问题:-注意:未定义索引:product_price-注意:未定义索引:product_quantity-注意:
This question already has answers here: “Notice: Undefined variable”, “Notice: Undefined index”, and
我正在尝试从以下位置获取数据: http://api.convoytrucking.net/api.php?api_key=public&show=player&player_name=Mick_Gi
切记,在PHP 7中不要做的10件事 1. 不要使用 mysql_ 函数 这一天终于来了,从此你不仅仅“不应该”使用mysql_函数。PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移
前几天安装了dedecms系统,当在后台安全退出的时候,后台出现空白,先前只分析其他功能去了,也没太注意安全,看了一下安全退出的代码,是这样写的: 复制代码 代码如下: function ex
我使用此代码来检查变量$n0、$n1、$n2是否未定义。 但每次未定义时我都会收到通知。我的代码是一种不好的做法吗?还有什么替代方案吗?或者只是删除通知,代码就可以了? if
编写代码时处理所有警告是否重要?在我公司中具有较高资历的开发人员坚持认为警告是无害的。诚然,其中一些是: Warning: Division by zero Notice: Undefined ind
我有一个搜索查询,执行搜索查询后,我将$ result放入数组中。 我的PHP代码- $contents = $client->search($params); // executing the se
This question already has answers here: “Notice: Undefined variable”, “Notice: Undefined index”, and
我是一名优秀的程序员,十分优秀!