Questions tagged «code-access-security»

3
如何在不违反继承安全规则的情况下在.NET 4+中实现ISerializable?
背景:Noda Time包含许多可序列化的结构。尽管我不喜欢二进制序列化,但在1.x时间线中,我们收到了许多支持它的请求。我们通过实现ISerializable接口来支持它。 我们已经收到了有关.NET Fiddle中Noda Time 2.x 的最新问题报告。使用Noda Time 1.x的相同代码可以正常工作。抛出的异常是这样的: 重写成员时违反了继承安全性规则:“ NodaTime.Duration.System.Runtime.Serialization.ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)”。覆盖方法的安全可访问性必须与被覆盖方法的安全可访问性相匹配。 我将其范围缩小到目标框架:1.x面向.NET 3.5(客户端配置文件);2.x面向.NET 4.5。它们在支持PCL与.NET Core以及项目文件结构方面有很大的不同,但这似乎无关紧要。 我已经设法在一个本地项目中重现了它,但是还没有找到解决方案。 在VS2017中重现的步骤: 创建一个新的解决方案 创建一个针对.NET 4.5.1的新的经典Windows控制台应用程序。我称它为“ CodeRunner”。 在项目属性中,转到“签名”,然后使用新密钥对部件进行签名。取消选中密码要求,然后使用任何密钥文件名。 粘贴以下代码进行替换Program.cs。这是此Microsoft示例中的代码的简化版本。我将所有路径保持不变,因此,如果您想返回完整的代码,则无需更改其他任何内容。 码: using System; using System.Security; using System.Security.Permissions; class Sandboxer : MarshalByRefObject { static void Main() { var adSetup = new AppDomainSetup(); adSetup.ApplicationBase = System.IO.Path.GetFullPath(@"..\..\..\UntrustedCode\bin\Debug"); var permSet = …

8
实际使用中的“代码访问安全性”吗?
警告: 自从提出此问题以来,.Net和.Net core的较新版本已删除和/或更改了“代码访问安全性”(CAS)。 原始问题: 我正在研究70-536 .NET Framework-应用程序开发基础考试,因为我对.net进行编程已有多年,所以这并不难! 但是,我必须学习“代码访问安全性”(CAS),因为我从未需要使用或配置它,所以我想知道是否有人找到了它的真实用法? 请提供有关您何时使用CAS的示例,它已成为解决方案的一部分,而不是问题的一部分。 (到目前为止,其他所有内容都与我多年的.NET编程中必须完成的任务有关) 相关问题: 为什么要使用CAS(代码访问安全性)?-除了Microsoft如何使用外,这里几乎没有现实的例子。 有人真的在使用代码访问安全性来保护其程序集和/或方法吗? 什么是.NET中的代码访问安全性-很好地定义了CAS,但没有给出实际示例。 。NET代码访问安全性:有用还是过于复杂? 到目前为止的结果。 当您托管第三方代码时,CAS很有用。例如,网络托管公司可以使用它来阻止其客户的Asp.net代码对服务器造成损害。(当.NET代替VBA时,Office也会使用它) 到目前为止,在Microsoft应用程序之外使用的唯一详细示例是: 我最近做的一个项目有一个类似的东西:允许用户上传一个库,并对其性能进行测试(“谁创造了最好的算法”)。不用说,我们在那里非常需要CAS。 CAS似乎对获得JITDC认证很有用,就像美国国防部一样,但是我不知道CAS是否具有真正的价值,还是只是在框上打勾。 (如果您需要绕过使用CAS的主机并且对它们具有管理权限,则可以将程序集放入GAC。) 展望未来,.net 4中的CAS不太复杂。 至少看起来,新的Microsoft考试不会包含CAS的“基础”考试。我不知道它是否会进入新的Winforms / WPF考试。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.