【问题标题】:System.Security.SecurityException: Request for principal permission failedSystem.Security.SecurityException:请求主体权限失败
【发布时间】:2012-01-11 01:16:26
【问题描述】:

谁能帮我指出如何解决这个错误的正确方向?

System.Web.Services.Protocols.SoapException: Server was unable to process request. 
     ---> System.Security.SecurityException: Request for principal permission failed.
at System.Security.Permissions.PrincipalPermission.ThrowSecurityException()
at System.Security.Permissions.PrincipalPermission.Demand()
at System.Security.PermissionSet.DemandNonCAS()
at LiveDocx.MailMerge.SetLocalTemplate(String template, String format)

我已经安装了我的公司从 LiveDocx 购买的这个软件。所以,我没有能力修改代码甚至阅读代码。我已经根据他们的文档安装了所有东西,并且确认该站点可以正常工作。我只能更改 IIS、文件夹权限和 Web.config 中的设置。我们的服务器,他们的软件。

现在,我在保持登录到网络服务时遇到问题。在您认为它是肥皂客户端之前,我已经通过调用供应商的服务器确认它可以工作。

在本地,我可以在登录期间成功调用 Web 服务,并且工作正常。但是,当我进行后续呼叫时,我会收到 Request for principal permission failed。

应他们技术支持的要求,我在 web.config 中添加了<trust level="Full" />,但没有成功。现在,他们已停止回复我们的电子邮件。

我不是 ASP.NET 开发人员,因此我的知识仅限于服务器设置。有人可以指出为什么会发生此错误的正确方向以及解决此问题的几个地方吗?

【问题讨论】:

  • 我的windows组是新创建的,重启后问题就消失了。

标签: c# asp.net iis web-config livedocx


【解决方案1】:

我终于找到了解决办法。这个关于权限的错误有点误导。经过大量的试验和错误,我终于接受了应用程序池用户的权限与这个问题无关。这导致我调查web.config 设置,这就是我发现问题的地方。

问题是提供的web.config 文件缺少<authentication> 标记和所需的设置。这个标签(据我了解)是启用 cookie 的原因。我希望这可以帮助其他人解决这个错误,即使与 LiveDocx 无关。似乎Request for principal permission failed. 可能是由各种原因引起的,这使得它成为一个令人沮丧的错误。

这篇文章很有帮助How To: Use Membership in ASP.NET 2.0

【讨论】:

    【解决方案2】:

    我怀疑执行请求的用户的身份,很可能是运行 IIS 应用程序的网站的 ASP.Net 应用程序池用户。

    最简单的测试方法是为您的 IIS 应用程序创建一个新的应用程序池(除非您当前的应用程序池中没有其他应用程序),为应用程序池选择不同的标识(您可以从网络服务开始,但它可能需要本地用户),然后将您的应用分配到该池。

    这应该会告诉您这是否是应用程序池身份的权限问题。

    【讨论】:

    • 是的,这不是应用程序池,我已经尝试了所有可能的用户,并为每个用户提供了完全的权限。
    【解决方案3】:

    我遇到了这个问题,因为我在一个网站下有一个应用程序配置为使用错误的 cookie 名称。

    我的根网站的 web.config 看起来像这样

    <authentication mode="Forms">
      <forms name="AuthCookie" path="/"></forms>
    </authentication>
    

    它下面的应用程序有一个 web.config,看起来像这样

    <authentication mode="Forms">
      <forms name="WRONGCOOKIENAME" path="/"></forms>
    </authentication>
    

    应用程序有一个带有如下构造函数的 web 表单

    [PrincipalPermissionAttribute(SecurityAction.Demand, Role = "Foo", Authenticated = true)]
    

    所以它需要身份验证,但它没有,因为 cookie 名称错误。修复 cookie 名称解决了错误。

    【讨论】:

      【解决方案4】:

      我遇到了类似的问题,我正在使用表单应用程序并不断遇到此问题。我也在使用 Principal 权限和 Security Action Demand。

      我尝试了所有与 web.config 相关的设置,最后一个问题是应用程序池。

      如果您将应用程序从 WinXP 迁移到 Win7 和其他更高版本,您可能会看到有一个托管管道,默认情况下将网站指向集成模式。我将其更改为已解决问题的经典模式。希望这会帮助那些试图将应用程序从 WinXp 迁移到 Win7 的成员

      【讨论】:

        【解决方案5】:

        在阅读所有博客和回答帖子后,经过多次反复试验,我仍然无法解决它。

        最后,我怀疑我的项目中的事情。

        我们是 DevExpress 产品,几天前就过期了,所以根据我的假设,它应该是许可,所以我们购买了相同的许可证,现在它开始正常工作了。

        P.S.:如果您使用任何许可产品,您也可能会收到此错误。所以也要检查许可证。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-26
          • 2018-03-10
          • 2010-12-30
          • 2012-12-01
          相关资源
          最近更新 更多