向 IIS 或者 web.config 添加反射权限?

向 IIS 或者 web.config 添加反射权限?

我在用着文件助手用于读取 csv 文件,一切都很好,直到我从 VS dev 服务器切换到 IIS,我得到了一个“PolicyException:无法获取所需的权限”,我谷歌了一下,发现我需要添加反射权限为了使其工作,有人知道该怎么做吗?

答案1

听起来您是在部分信任下运行。如果您的生产环境是在完全信任下运行,只需更新您的开发环境以在完全信任下运行即可。但是,如果您尝试模拟您的生产环境,那么请按照以下方法进行更改:

转到框架文件夹/配置。找出您处于哪个信任级别。例如,中等、完全等。这些级别可能在您网站的 web.config 或框架的根 web.config 中设置。

无论您在开发中做什么,您都需要在生产中做同样的事情。因此,第一步是像生产一样设置您的开发。然后,如果生产是中等信任(例如),您需要更新 web_mediumtrust.config 文件或创建它的副本作为自定义策略。使用根 web.config 文件中的语法来了解如何定义它。搜索关键字“trust”。

将以下内容添加到您的信任模板:在以下<SecurityClasses>部分中:

<SecurityClass Name="ReflectionPermission" Description="System.Security.Permissions.ReflectionPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

在该<PermissionSet class=NamedPermissionSet ..>部分中,添加如下内容:

<IPermission
    class="ReflectionPermission"
    version="1"
    Flags="ReflectionEmit"
/>

其中 Flags 是特定权限的逗号分隔列表。

或者:

<IPermission
    class="ReflectionPermission"
    version="1"
    Unrestricted="true"
/>

确保获得批准将相同的设置推送到生产中。

答案2

您使用的任何程序集是否位于网络共享上?如果是,则:

  • 将它们移动到本地机器。
    或者
  • 使用“Microsoft .NET Framework 2.0 配置”对本地内联网授予完全信任。

相关内容