2011-02-28 166 views
0

我试图从雅虎财务获得数据馈送。我用下面的代码这样做:IIS应用程序池标识

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

回答

1

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

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

0

是,有源拒绝是指示目标机器接收到该请求,并在标头被不正确或不充分处理的信息请求。如果必须在控制台中使用“run as”命令来运行此调用,则应用程序池的身份用户没有适当的权限或用户名是完全可能的。您可以尝试将身份用户更改为此特定域帐户,以查看是否可以缓解问题,但您可能必须将此特定功能分离到其自己的应用程序池中,以保护网站的其他部分免受此规范的影响。