System.Web.Providers 在中等信任下不起作用

Posted

技术标签:

【中文标题】System.Web.Providers 在中等信任下不起作用【英文标题】:System.Web.Providers doesn't work in medium trust 【发布时间】:2013-04-09 00:11:42 【问题描述】:

我有一个 ASP.NET WebForms 应用程序,它使用 Microsoft ASP.NET 通用提供程序 (NuGet) 作为成员资格和角色。在完全信任的情况下一切正常,但是当我编辑 web.config 以指定中等信任时,在加载访问成员资格的页面时出现此错误:

无法在部分受信任的安全策略下实例化类型“System.Web.Providers.DefaultMembershipProvider”(目标程序集上不存在 AllowPartiallyTrustedCallersAttribute)。

我在网上搜索过,但没有找到太多关于这是否是已知限制或是否有解决方法的信息。我正在开发开源应用程序 Gallery Server Pro,它分布在 MS Web Gallery 中,必须支持中等信任环境。

有什么见解吗?

[编辑] 根据请求,这里是 web.config 的东西(我没有使用配置文件或会话状态提供程序):

<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <clear />
    <add name="DefaultMembershipProvider" applicationName="Gallery Server Pro" connectionStringName="GalleryDb" passwordFormat="Clear" enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="50" minRequiredPasswordLength="2" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</membership>
<roleManager enabled="true" cacheRolesInCookie="true" cookieProtection="Validation" defaultProvider="DefaultRoleProvider">
  <providers>
    <clear />
    <add name="DefaultRoleProvider" applicationName="Gallery Server Pro" connectionStringName="GalleryDb" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</roleManager>

【问题讨论】:

你经历过这个过程msdn.microsoft.com/en-us/library/wyts434y%28v=vs.100%29.aspx 吗? (“配置部分信任可见程序集”似乎很有趣) 我尝试将 partialTrustVisibleAssemblies 添加到 web.config 并得到相同的错误(也尝试了 fullTrustAssemblies 以获得良好的效果,但没有运气)。不过,这是意料之中的,因为此技巧旨在处理标有 AllowPartiallyTrustedCallersAttribute 的程序集,而 System.Web.Providers 显然不是。 您能发布您的 Membership|RoleManager|Profile|Sessionstate 标签的 web.config 吗? 【参考方案1】:

我想可能是因为 cookie 中的 catch 作用,

&lt;roleManager enabled="true" cacheRolesInCookie="true" cookieProtection="Validation" ...

删除该部分,或将其设为假,然后检查其是否正常工作..

因为中等安全性会阻止 cookie 和更多的东西,因为 cookie 不被认为是安全的。它的基本资料用于清道夫(从遗留/临时文件中窃取数据)。

我希望这会做..

【讨论】:

不幸的是,这没有帮助。我尝试了一些 cookie 设置的变体,但总是同样的错误。我应该注意我的上一个版本,它使用了不同的提供者但相同的角色管理器设置,DID 在中等信任下工作。

以上是关于System.Web.Providers 在中等信任下不起作用的主要内容,如果未能解决你的问题,请参考以下文章

带有通用提供程序的 ASP.NET MVC 4 中的错误

加入中视频计划赚钱吗?你还别不信收益确定高

基于IPv6的RIPng路由协议测试——信而泰网络测试仪实操

基于IPv6的RIPng路由协议测试——信而泰网络测试仪实操

哪些 ORM 在中等信任下工作?

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