亚音速 3.0 中等信任问题

Posted

技术标签:

【中文标题】亚音速 3.0 中等信任问题【英文标题】:Subsonic 3.0 Medium Trust Issue 【发布时间】:2010-11-29 03:05:21 【问题描述】:

我在以中等信任度运行 Subsonic 时遇到问题,不知道我是否查询错误 - 如果 subsonic 3.0.3 的某些部分不喜欢中等信任度,有人可以告诉我吗?其他人不久前发布了类似的内容,但对于它是否存在(错误)没有真正的回复。 Rob 说它已经过测试,而其他人说他们仍然需要 bug (SubSonic 3.0 - Medium Trust)

我正在使用如下所示的查询:

List<Data.Blog> objBlogPosts = ((from blog in db.Blogs
                                            orderby blog.blogID descending 
                                             select blog).Take(10).ToList());

我得到的错误是:

System.MethodAccessException: 
System.Runtime.CompilerServices.StrongBox`1..ctor(System.__Canon) --->
System.Security.SecurityException: Request failed.
at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Object assemblyOrString, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
at System.Security.CodeAccessSecurityEngine.CheckSetHelper(PermissionSet grants, PermissionSet refused, PermissionSet demands, RuntimeMethodHandle rmh, Object assemblyOrString, SecurityAction action, Boolean throwException)
at System.Security.PermissionSetTriple.CheckSetDemand(PermissionSet demandSet, PermissionSet& alteredDemandset, RuntimeMethodHandle rmh)
at System.Security.PermissionListSet.CheckSetDemand(PermissionSet pset, RuntimeMethodHandle rmh)
at System.Security.PermissionListSet.DemandFlagsOrGrantSet(Int32 flags, PermissionSet grantSet)
at System.Threading.CompressedStack.DemandFlagsOrGrantSet(Int32 flags, PermissionSet grantSet)
at System.Security.CodeAccessSecurityEngine.ReflectionTargetDemandHelper(Int32 permission, PermissionSet targetGrant, CompressedStack securityContext)
at System.Security.CodeAccessSecurityEngine.ReflectionTargetDemandHelper(Int32 permission, PermissionSet targetGrant)
The action that failed was:
Demand
The type of the first permission that failed was:
System.Security.PermissionSet
The demand was for:
<PermissionSet class="System.Security.PermissionSet"
version="1"
Unrestricted="true"/>  

提前致谢。喜欢新的亚音速和 lambda 等,只是在部署到我的第一个共享主机时遇到问题:(

干杯 道格

【问题讨论】:

我在部署到中等信任度时遇到了同样的问题。有没有可用的修复方法?该错误是在 3 个多月前发布的,我不敢相信还没有人将 SubSonic 3.0 发布到中等信任度。 【参考方案1】:

Subsonic 不会在共享主机场景中工作(以及那些具有中等信任度的场景)。问题是这一行...

Func<IQueryable> fn = efn.Compile();

也许等待 3.1 或转到 2.0,因为目前绝对不能选择亚音速。这是个好主意,但很遗憾脖子上的胡须没有告诉他们的用户这个问题。

至少他们教我包括

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

在我的 web.config 中用于共享托管网站的任何开发。

【讨论】:

今天据说新的亚音速 3.1 在中等信任下运行良好 - 我认为他们已经解决了所有问题。这很令人兴奋,因为我一直在等待升级我的项目直到完成 好消息!你有链接吗?我知道这是一个已知问题,但不是 3.1 的已确认修复。【参考方案2】:

编辑 - 该错误现已修复,3.1 版在发布时将支持中等信任,如果您从 github 拉取最新版本的源并自己构建,您应该会发现它现在可以在中等信任下运行。

看起来您遇到了this 错误。如果您可以在错误报告中添加更多详细信息,例如可能有帮助的最小测试用例。

【讨论】:

今晚我会尝试发布一个 sql 脚本和演示项目,但同时必须有人让它工作 - 怎么样?

以上是关于亚音速 3.0 中等信任问题的主要内容,如果未能解决你的问题,请参考以下文章

如何自动化测试中等信任代码

NHibernate 3.3.1 与中等信任错误

中等信任的 LDAP

反射会带来啥风险? (中等信任度)

ASP.Net 中等信任设置

在中等信任下通过 GMail SMTP 发送电子邮件