任何人都可以帮助我指出如何解决此错误的正确方向吗?
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服务的问题。在您认为它是soap客户端之前,我已经确认它通过调用供应商的服务器来工作。
在本地,我可以在登录期间成功调用Web服务,它运行正常。但是,当我进行后续通话时,我会收到Request for principal permission failed
。
应他们的技术支持请求,我已将<trust level="Full" />
添加到web.config,但这不起作用。现在,他们已停止回复我们的电子邮件。
我不是ASP.NET开发人员,所以我的知识仅限于服务器设置。有人能指出我正确的方向,为什么会发生这种错误,还有几个地方可以解决这个问题?
答案 0 :(得分:2)
我怀疑正在执行请求的用户的身份,这很可能是运行IIS应用程序的网站的ASP.Net应用程序池用户。
最简单的测试方法是为IIS应用程序创建一个新的应用程序池(除非当前应用程序池中没有其他应用程序),为应用程序池选择不同的标识(可以从网络服务开始,但它可能需要本地用户),然后将您的应用程序分配给该池。
这应该告诉您它是否是应用程序池标识的权限问题。
答案 1 :(得分: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名称解决了错误。
答案 2 :(得分:2)
我有类似的问题,我正在使用表单应用程序并继续解决此问题。我还使用了Principal权限和Security Action Demand。
我尝试了所有与web.config相关的设置,最后一个问题是应用程序池。
如果您将应用程序从WinXP迁移到Win7和其他更高版本,您可能会看到有一个托管管道,默认情况下将网站指向Intergrated模式。我把它改成经典模式,这已经解决了这个问题。希望这有助于试图将应用程序从WinXp移动到Win7的成员
答案 3 :(得分:0)
在阅读了所有博客和答案后,经过反复尝试和失败,我仍然无法解决问题。
最后,我怀疑我项目中的东西。
我们是DevExpress产品,它已在几天前过期,所以根据我的假设,应该已获得许可,因此我们购买了该许可,现在它可以正常工作。
附注:如果您使用的是任何许可产品,也可能会遇到此错误。因此,也请检查有关许可证的信息。