IIS应用程序池标识

时间:2011-02-28 11:54:13

标签: iis httpwebrequest

我正试图从雅虎财经获取数据Feed。我使用以下代码执行此操作:

System.Net.WebRequest request = System.Net.WebRequest.Create(http://download.finance.yahoo.com/download/quotes.csv?format=sl&ext=.csv&symbols=^ftse,^ftmc,^ftas,^ftt1x,^dJA);
request.UseDefaultCredentials = true;

// set properties of the request
using (System.Net.WebResponse response = request.GetResponse())
{
    using (System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream()))
    {
        return reader.ReadToEnd();
    }
}

我已将此代码放入控制台应用程序中,并在输出中使用Console.WriteLine,我收到了我需要的信息。我使用'Run as ..'命令使用特定的域帐户执行此操作。

当我在页面加载中使用此代码时,我收到以下错误消息“无法建立连接,因为目标计算机主动拒绝它76.13.114.90:80”。

这似乎暗示这个电话正在到达雅虎(这是真的吗?)并且有些东西缺失。

这表明控制台应用程序和应用程序池之间的调用存在身份差异。

环境是:Windows Server 2003,IIS 6.0,.net 4.0

2 个答案:

答案 0 :(得分:1)

“目标计算机主动拒绝它”表示TCP连接本身没有成功。这可能是因为在IIS下运行时的代理设置与在控制台中运行时应用的代理设置不同。

您可以通过在请求中设置WebProxy来解决此问题,该WebProxy指向环境中使用的代理服务器。

答案 1 :(得分:0)

是的,主动拒绝表示目标计算机正在接收请求,并且标头中的信息不正确或不足以处理请求。如果您必须在控制台中使用“run as”命令运行此调用,则应用程序池的标识用户没有相应的权限或用户名。您可以尝试将身份用户更改为此特定域帐户,以查看是否可以缓解此问题,但您可能必须将此特定功能隔离到其自己的应用程序池中,以保护网站的其余部分不会出现此规范。< / p>