2

我已经设法解决了这个问题,但我需要帮助理解它,因为我不喜欢这个解决方案。

我有一个向 Azure REST API 服务发出 HttpWebRequest 的 WCF 服务。但是,当调用这行代码时

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

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

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

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

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

4

1 回答 1

0

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

我已经测试了一个创建 WebRequest 的 WCF 方法,并且服务作为控制台应用程序自托管以及使用ApplicationPoolIdentity在 IIS 下托管时都可以工作

我已经在 Windows 7 机器上对其进行了测试。

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

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

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

有关文档,请参见此处

或者

2.通过在Web.config中设置defaultProxy元素来设置要使用的代理

有关文档,请参见此处

希望这可以帮助

于 2012-12-15T16:01:50.127 回答