C# 程序集不允许部分受信任的调用方

C# 程序集不允许部分受信任的调用方,c#,visual-studio-2008,partial-trust,C#,Visual Studio 2008,Partial Trust,如何更改库以允许部分受信任的呼叫者 我得到以下错误: “/”应用程序中出现服务器错误 安全例外 描述:应用程序已尝试 执行不允许的操作 安全政策。同意 申请所需的权限 请联系您的系统 管理员或更改 应用程序在数据库中的信任级别 配置文件 例外情况详情: System.Security.SecurityException: 该大会不允许部分 受信任的呼叫者 源错误:[无相关源 [行] 源文件:App_Web_kzj7vfkn.2.cs 行:0 编辑 在进一步研究问题之后,似乎是System.Web

如何更改库以允许部分受信任的呼叫者

我得到以下错误:

“/”应用程序中出现服务器错误

安全例外

描述:应用程序已尝试 执行不允许的操作 安全政策。同意 申请所需的权限 请联系您的系统 管理员或更改 应用程序在数据库中的信任级别 配置文件

例外情况详情: System.Security.SecurityException: 该大会不允许部分 受信任的呼叫者

源错误:[无相关源 [行]

源文件:App_Web_kzj7vfkn.2.cs
行:0

编辑
在进一步研究问题之后,似乎是System.Web.UI.ClientScriptManager导致了问题

假设您可以访问库的源代码

  • 给你试图调用的库起一个强名称
  • 添加到您正在尝试添加的库中 打电话
  • 创建代码组以设置对库的权限
一个相当好和详细的解释也给出了阅读底部的链接,以获得更好的理解


可能不是您的程序集出了问题,但您正在调用另一个不允许部分受信任调用方的程序集。在运行时,您可以使用查找给您带来问题的程序集。如果这是问题所在,并且您拥有此程序集的源,则还需要将该属性应用于该程序集,如果你没有资料来源,我所知道的唯一选择就是替换麻烦的库。

我知道这是一个非常老的问题,但我刚刚遇到了这个问题,并且能够使用与公认答案不同的方法解决它。由于这是谷歌搜索错误消息时的第一个结果,我认为它会很有用如果我与他人分享我的解决方案

当我试图与一个硬件集成时,我遇到了一个问题。硬件有自己的安装程序,可以将DLL注册到GAC中。它安装的DLL有2个依赖项DLL,但由于某些原因,安装程序运行时没有注册依赖项DLL

基本上,场景是条目DLL在GAC中注册,其两个依赖项DLL未在GAC中注册,但确实存在于可执行文件旁边

当我运行程序并试图使用硬件时,程序正在查找可执行文件旁边的条目DLL,但找不到。然后程序将转到GAC,在那里它将找到条目DLL。一旦进入硬件的DLL,它最终会尝试使用GAC中不存在但在可执行文件旁边的依赖DLL。从GAC调用可执行文件旁边的DLL会引发部分受信任的调用方错误

我通过在可执行文件旁边放置条目DLL的副本来解决这个问题

我很好奇什么样的场景会起作用,什么会导致安全性错误,我发现这些场景按照预期工作:

  • 可执行文件旁边的所有三个DLL
  • GAC中的所有三个DLL
  • 唯一持续失败的场景是,任何层都在GAC内部,而任何依赖项DLL都在GAC外部

    失败的场景#1:

  • GAC中的条目DLL
  • Exe旁边的DLL#2和DLL#3

    • 无法将DLL#2定位为故障DLL
  • 失败的场景#2:

  • GAC中的条目DLL和DLL#2
  • Exe旁边的DLL#3

    • 无法将DLL#3定位为故障DLL
  • 失败的场景#3:

  • GAC中的条目DLL和DLL#3
  • exe旁边的DLL#2

    • (可以预见)无法将DLL#2定位为故障DLL

  • 我没有测试它,但我认为这是一个安全的假设,如果条目DLL和DLL#3在可执行文件旁边,而DLL#2在GAC中,那么它可能会出现错误,因为DLL#3被定位为问题。

    我知道回答这个问题已经很晚了,但我想再添加一个答案,以帮助未来的访问者

    我的场景

    当我遇到这个问题时,我正在我的
    asp.net
    应用程序中实现CCAVINE支付网关,因为CCAVINE加密
    MCPG.CCA.Util

    请在
    web.config

    <system.web>
    
      <trust level="Full" />
    
    </system.web>
    

    我也遇到了类似的问题,我尝试了上述所有答案,但没有一个对我有效。显然,我的情况不同,在我的情况下,框架是3.5。我把它改成4或更高,它对我有效

    就我而言-

    这解决了一个类似的问题:

    我必须转到我的dll属性,
    然后按解锁按钮:
    根据您使用的库和设置,这里还有另一种可能的解决方案:确保您的程序是从“本地”驱动器运行的

    在主机和来宾操作系统之间共享的文件夹中的VM中运行程序时,遇到此错误消息,exe旁边有库dll。将文件夹复制到来宾操作系统的本地驱动器修复了该问题


    这会导致信任问题,这是有道理的,但如果有更有用的错误消息就好了。

    知道是哪个库吗?App_Web是您的代码吗?(如App_Web.aspx)该库是xVal webforms。这很奇怪,因为我在另一个网站上运行了它。实际上,似乎是System.Web.UI.ClientScriptManager导致了问题。我有源代码,但我无法创建密钥对,因为我使用的是express版本,无法访问vs命令提示符。我不完全确定,手头也没有express版本,但我相信express版本有一个签名选项卡(项目属性),您可以使用该选项卡创建