我必须说到目前为止,我可能只是很幸运,因为我从未遇到过与中等信任网站相关的问题。我只开发过内联网应用程序,或者碰巧使用了一个完全信任的托管公司。但是我被要求用于最近项目的主机以中等信任运行,所以我试图让我的应用运行这个。几个问题 - 我在Windows XP上开发。 IIS上是否可以配置中等信任(更容易调试)和/或是否为web.config设置?关于这个主题有很多信息,学习曲线很陡。

其次,经过大量的摆弄和删除代码之后,我认为这一行会导致权限错误:

对于每个FieldInfo,作为Type.GetFields中的FieldInfo(BindingFlags.Instance或BindingFlags.NonPublic或BindingFlags.Public)

任何人都可以澄清这是一个可能的候选人,尤其是那个NonPublic国旗?这是复制<!>放大器;粘贴的代码(Coding Horror突出了这个的风险)所以我从来没有真正考虑过。我假设循环遍历对象的公共和非公共字段中的每个字段 - 我已经读过受保护字段被禁止反对中等信任。

干杯,罗布。

有帮助吗?

解决方案

抱歉,使用NonPublic反映相当于完全信任。

如果不知何故我没有完全信任但有NonPublic反思,我可以利用它来改变我自己的代码信任级别(可写字符串等)。

其他提示

是的,XP上的网站可以配置为以中等信任的方式运行:

在<!> lt; system.web <!> gt;部分添加以下内容:

<!-- Case is important: it's Medium, not medium -->
<trust level="Medium"/>

你在那儿。

您可能会发现,大多数主机以略高的<!>“中等<!>”运行其网站。信任设置,除了默认设置之外还有一些额外的权利 - 他们的技术人员应该能够告诉你他们有什么区别(如果有的话)。

如果你看看:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web_mediumtrust.config

您将看到应用的默认设置。

反思是媒介信任受到限制的关键因素之一 - 来自 GetFields 页面:

  

如果请求的字段是非公共字段且调用者没有ReflectionPermission来反映当前程序集之外的非公共对象,则此方法返回空引用(在Visual Basic中为Nothing)。

由于这有可能返回null,因此您应该在开始迭代之前检查null,或者在使用之前检查FieldInfo是否为null / nothing。

我打算将此标记为已关闭,因为没有人回答,而且只是证明尝试重新编码太有问题了。该程序编写得不是很糟糕,但是对于对象映射非常重视反射,说实话,找到一个支持完全信任的托管公司会更容易。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top