使用HttpWebRequest禁止403错误

时间:2012-12-14 19:10:31

标签: wcf httpwebrequest iis-8

我设法解决了这个问题,但我希望能帮助理解它,因为我不喜欢这个解决方案。

我有一个WCF服务,它将一个HttpWebRequest发送到Azure REST API服务。但是当这行代码被调用时

HttpWebResponse response = (HttpWebResponse) request.GetResponse();

返回403 Forbidden错误。内容长度为0,错误代码和描述都说“禁止”。

现在,如果我将代码复制到控制台应用程序中,它可以正常工作。因此,这让我相信它归结为应用程序池标识中的权限。

果然,如果我将应用程序池的身份更改为自己,我的代码就会开始工作。

我的问题是我如何授予内置 ApplicationPoolIdentity 帐户的权限,以便我可以执行HttpWebRequest?

1 个答案:

答案 0 :(得分:0)

问题很可能是由于 ApplicationPoolIdentity 用户无法使用用户设置。

我已经测试了一个WCF方法,当该服务自托管作为控制台应用程序时,创建WebRequest并同时使用 ApplicationPoolIdentity

在IIS 下托管

我已在Windows 7计算机上测试过它。

可能导致问题的一种可能设置可能是 HTTP代理,常用于企业环境。

如果您的登录用户有代理设置,您可以尝试:

1.以编程方式设置WebRequest的Proxy属性。

有关文档,请参阅here

OR

2。 通过在Web.config

中设置defaultProxy元素来设置要使用的代理

有关文档,请参阅here

希望这有帮助