9

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

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 服务时遇到问题。在您认为它是肥皂客户端之前,我已经通过调用供应商的服务器确认它可以工作。

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

应他们技术支持的要求,我已将其添加<trust level="Full" />到 web.config 中,但这不起作用。现在,他们已停止回复我们的电子邮件。

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

4

5 回答 5

3

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

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

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

于 2012-01-18T16:00:29.677 回答
2

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

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

这应该告诉您这是否是应用程序池标识的权限问题。

于 2012-01-11T02:49:13.653 回答
2

我遇到了这个问题,因为我在一个网站下有一个应用程序配置为使用错误的 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 名称解决了错误。

于 2012-08-14T17:23:44.527 回答
2

我有一个类似的问题,我正在使用表单应用程序并继续遇到这个问题。我还使用了 Principal 权限和 Security Action Demand。

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

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

于 2016-10-04T16:51:22.710 回答
0

在阅读所有博客和回答的帖子后,经过大量的试验和错误,我仍然无法解决它。

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

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

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

于 2020-06-05T07:43:23.270 回答