我设法解决了这个问题,但我希望能帮助理解它,因为我不喜欢这个解决方案。
我有一个WCF服务,它将一个HttpWebRequest发送到Azure REST API服务。但是当这行代码被调用时
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
返回403 Forbidden错误。内容长度为0,错误代码和描述都说“禁止”。
现在,如果我将代码复制到控制台应用程序中,它可以正常工作。因此,这让我相信它归结为应用程序池标识中的权限。
果然,如果我将应用程序池的身份更改为自己,我的代码就会开始工作。
我的问题是我如何授予内置 ApplicationPoolIdentity 帐户的权限,以便我可以执行HttpWebRequest?
答案 0 :(得分:0)
问题很可能是由于 ApplicationPoolIdentity 用户无法使用用户设置。
我已经测试了一个WCF方法,当该服务自托管作为控制台应用程序时,创建WebRequest并同时使用 ApplicationPoolIdentity
我已在Windows 7计算机上测试过它。
可能导致问题的一种可能设置可能是 HTTP代理,常用于企业环境。
如果您的登录用户有代理设置,您可以尝试:
1.以编程方式设置WebRequest的Proxy属性。
有关文档,请参阅here。
OR
2。 通过在Web.config
中设置defaultProxy元素来设置要使用的代理有关文档,请参阅here。
希望这有帮助