类型'System.Net.Http.WebRequestHandler'违反了继承安全规则。

4
我能够帮助你进行翻译。以下是涉及MVC应用程序的web.config文件中相关的装配参考:

我在MVC应用程序的web.config文件中看到以下装配参考...

<dependentAssembly>
  <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.0.0.0" />
</dependentAssembly>

每次我安装或更新任何NuGet包时,版本号都会自动更新为4.1.1.0。但是这会完全破坏我的应用程序,它会显示错误信息:“由类型'System.Net.Http.WebRequestHandler'违反了继承安全性规则。派生类型必须与基类型的安全可访问性匹配或不可访问性更小。” 我发现其他问题中建议的解决方案是将版本号改回旧版本。然而,这似乎并不令人满意。一定有一些潜在问题导致我必须始终使用此模块的旧版本。我正在寻找一个正确的解决方案,而不仅仅是不断地通过修改来使其工作。 有人知道实际原因是什么,并知道如何使用所有软件包的推荐版本来正确修复它吗?

最初的错误已在 System.Net.Http 版本 4.3.1 中得到解决 - 请参见 类型 'System.Net.Http.WebRequestHandler' 违反继承安全规则。 - Michael Freidgeim
4个回答

4

我在实例化KeyVaultClient时遇到了这个错误。通过安装nuget包System.Net.Http v4.3.2,我成功解决了它。


虽然这可能会解决遇到的问题,但它是通过隐藏而不是解决原因来实现的。 - Tanveer Badar
1
@TanveerBadar 你能解释一下为什么吗? - James Wierzba

2
解决方案比我预期的要简单得多。我从web.config文件中完全删除了System.Net.Http引用,现在它可以正常工作了。

1
这可能是 System.Net.Http 版本问题。我在 VS 2015 中运行代码时,它抛出了异常。然后我在 VS 2017 中运行代码,它可以正常工作。

0

您还可以验证选项中是否已勾选“跳过应用绑定重定向”。

如果未勾选,则Visual Studio将更新您的web.config文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接