系统安全性异常:请求主体权限失败。

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中更改设置。我们的服务器,他们的软件。
现在,我遇到了无法保持登录到WebService的问题。在您认为是soap客户端之前,我已经确认它可以通过调用供应商的服务器来工作。
在本地,我可以成功调用登录期间的Web服务,并且它可以正常工作。但是,在进行后续调用时,我会收到“请求主体权限失败”的错误信息。
在其技术支持的要求下,我已将添加到了web.config中,但这并没有起作用。现在,他们已停止回复我们的电子邮件。
由于我不是ASP.NET开发人员,因此我的服务器设置知识有限。有人能指导我为什么会出现此错误以及解决此问题的几个地方吗?

我的Windows组是新创建的,在重新启动后问题已经解决了。 - Circle Hsiao
5个回答

3
我终于找到了解决方案。这个关于权限的错误有点误导人。经过多次尝试,我最终认识到应用程序池用户的权限与此问题无关。这促使我调查web.config设置,发现了问题所在。
问题在于提供的web.config文件缺少<authentication>标记和所需的设置。据我所知,这个标记是启用cookie的关键。即使与LiveDocx无关,我希望这可以帮助其他遇到这个错误的人。似乎“请求主体权限失败”可能由各种原因引起,这使它成为一个令人沮丧的错误。
这篇文章非常有帮助:ASP.NET 2.0中如何使用成员资格

2
我会怀疑执行请求的用户身份,很可能是运行在您的IIS应用程序中的ASP.Net应用程序池用户。
最简单的方法是为您的IIS应用程序创建一个新的应用程序池(除非当前应用程序池中没有其他应用程序),选择不同的应用程序池标识(您可以从网络服务开始,但可能需要本地用户),然后将您的应用程序分配给该池。
这将告诉您是否存在与应用程序池标识有关的权限问题。

是的,这不是应用程序池的问题,我已经尝试了每个可能的用户并为每个用户授予了完全权限。 - brady.vitrano

2

我曾经遇到类似的问题,当时我正在使用一个表单应用程序,但是不断出现这个问题。我还使用了主体权限和安全操作需求。

我尝试了所有与web.config相关的设置,最终发现问题出在应用程序池上。

如果你正在将应用程序从WinXP迁移到Win7或其他更高版本,你可能会发现默认情况下托管管道指向集成模式,我将其更改为经典模式,这样问题就得到了解决。希望这可以帮助那些正试图将应用程序从WinXp迁移到Win7的人们。


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名称即可解决该错误。


0

在阅读所有博客和答案帖子后,经过多次尝试,我仍然无法解决问题。

最后,我怀疑我的项目中有一个问题。

我们使用的是DevExpress产品,其有效期在几天前到期。因此,根据我的假设,应该进行许可,因此我们为其购买了许可证,现在它已经开始正常工作。

P.S.:如果您正在使用任何许可产品,您可能也会遇到此错误。因此,请仔细检查许可证情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接