2011-02-28 232 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」命令來運行此調用,則應用程序池的身份用戶沒有適當的權限或用戶名是完全可能的。您可以嘗試將身份用戶更改爲此特定域帳戶,以查看是否可以緩解問題,但您可能必須將此特定功能分離到其自己的應用程序池中,以保護網站的其他部分免受此規範的影響。