我想测试部分信任环境中某段.NET代码的行为。什么是最快的方式来设置呢?随意假定我(和其他读者)是全部CAS noobs。在部分信任环境中测试.NET代码
@Nick:谢谢你的回复。唉,有问题的工具是明确的非托管代码。在我的问题中,我没有说“管理”,也不应该假定人们会从“.NET”标记中推断出它。
我想测试部分信任环境中某段.NET代码的行为。什么是最快的方式来设置呢?随意假定我(和其他读者)是全部CAS noobs。在部分信任环境中测试.NET代码
@Nick:谢谢你的回复。唉,有问题的工具是明确的非托管代码。在我的问题中,我没有说“管理”,也不应该假定人们会从“.NET”标记中推断出它。
这是一个很好的问题,特别是从TDD的角度来看,并验证不同信任场景下的代码。
我想我会处理这个的办法是沿着线的东西 -
在使用AppDomain.CreateDomain()过载,使您可以在通过我的TDD的代码创建一个AppDomain PermissionSet中。 PermissionSet将被构建为匹配您想要测试的不同信任方案。
负载含有下测试逻辑到应用程序域
组件创建的类型/调用方法等中的应用程序域,陷阱安全异常
东西有点像该实例。我还没有时间敲定一个概念证明呢。
使用Microsoft Application Verifier。
AppVerifier的帮助确定:
您应该看看.NET Framework配置工具。这是在.NET SDK,你可以在这里上运行它找到的指令...... http://msdn.microsoft.com/en-us/library/2bc0cxhc.aspx
在运行安全策略部分,你会发现3策略级别:企业,计算机和用户。如果您钻入机器或用户,您会发现代码组定义和权限集。当你说你想在部分信任环境中测试一些.NET代码时,我想你会想根据已经定义的标准权限集之一进行测试,例如Internet。您需要定义一个代码组,它与您的应用程序(或特定程序集)相匹配,并将您选择的权限集分配给代码组。
您也可以定义您自己的自定义权限集,但现在让我们保持简单。
选择您希望您的新代码组在机器范围内存在,还是仅存在于您的用户帐户,并相应地钻入机器或用户策略级别。您会看到一个名为_All _ Code_的代码组。创建一个子码组一个内,通过右键单击并选择新建...
给它一个名字,说PartialTrustGroup,然后单击下一步。
您必须为此组指定成员资格条件,并且存在各种类型。我想在我的机器上创建一个名为PartialTrust的特定文件夹,然后创建一个匹配的URL成员资格条件。因此,我的网址如下所示... file:// c:/ users/martin/documents/partialtrust/*
*是通配符,用于捕获该路径下的任何程序集。点击下一页。
现在您可以为您的新代码组选择一个权限。目前,请选择互联网。这是一个相当严格的集合,类似于Java applet沙箱。点击下一步和完成。
现在右键单击您的新代码组,然后选择属性。在常规选项卡中,确保选中最上面的复选框,然后单击确定。
现在,从指定的URL下的某个位置加载的任何.NET程序集都将对其应用Internet权限集。如果您没有编写代码仔细观察缩减的权限集,那么预计会得到一些SecurityExceptions。
对不起,这是一个很长的描述。它确实比听起来简单得多。
你要找的是内置到Visual Studio的功能:
你的项目的安全选项卡中,有一个“高级”按钮,让你配置是否要在调试完全信任或指定的信任级别。
我刚在博客上发布了一篇名为Partial Trust Testing with xUnit.net的文章。它详细介绍了我们在Entity Framework团队中使用的基于xUnit.net的框架以中等信任度来执行代码。
下面是它的用法的一个例子。
public class SomeTests : MarshalByRefObject
{
[PartialTrustFact]
public void Partial_trust_test1()
{
// Runs in medium trust
}
}
// Or...
[PartialTrustFixture]
public class MoreTests : MarshalByRefObject
{
[Fact]
public void Another_partial_trust_test()
{
// Runs in medium trust
}
}
+1这只是帮了我很多谢谢。 – 2011-02-14 13:35:54