2010-10-22 318 views
3

我試圖從網頁執行網絡請求,並且在生產服務器上遇到問題。由於目標機器主動拒絕,因此無法建立連接

的Web應用程序是一個內部網站上的web.config此配置:

<authentication mode="Windows" /> 

我用它來獲取域用戶認證。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

的錯誤信息是:

現在我試圖加載網頁解析的一些信息,我用下面的代碼,第二行顯示錯誤由於目標機器主動拒絕64.233.163.104:80,因此無法建立連接。

堆棧跟蹤:

[SocketException (0x274d): No connection could be made because the target machine actively refused it 64.233.163.104:80] 
    System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) +269 
    System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception) +649 

[WebException: Unable to connect to the remote server] 
    System.Net.HttpWebRequest.GetResponse() +1126 
    Fumagalli.Insight.Admin.Teste.Page_Load(Object sender, EventArgs e) +606 
    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25 
    System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +42 
    System.Web.UI.Control.OnLoad(EventArgs e) +132 
    System.Web.UI.Control.LoadRecursive() +66 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428 

該錯誤不,我tryed所有的網址出現,我可以從www.yahoo.com而不是從www.google.com響應例如。我的PC(Windows 7)上的所有東西都能正常工作,我可以使用相同的身份驗證模式(使用域控制器)從任何URL獲得響應,但問題僅發生在生產服務器(Windows Server 2008)上。

任何人都有一個理想?

+0

問題解決了。有兩個網絡適配器在服務器上,一些請求從其他網關,阻止訪問:(這是已修復。謝謝所有。 – 2010-10-26 21:21:54

回答

1

服務器可能因爲身份驗證以外的其他原因而主動拒絕連接。這些其他原因中的大多數都與請求的形式以及接收它的端口有關。不匹配或封閉的端口將導致拒絕連接。然而,在這種情況下,谷歌前門製作的HttpRequest應該會給你一個迴應。我猜測Google可能會檢查HttpRequest中包含的WebAgent標頭信息;您的應用程序看起來像一個.NET應用程序,並將其自身呈現給Google。我想,Google已經採取措施減少來自簡單的.NET應用程序的DOS攻擊,例如無限循環GetResponse()調用。您可能需要通過指定自定義WebAgent標頭字符串來模擬其他瀏覽器,如IE 8。

+0

我認爲這不是因爲我用它來開發它的PC上工作。我會嘗試 – 2010-10-22 22:51:45

5

我碰到這樣的問題,事實證明,我們是使用代理,這可能是這個問題,我知道它是一個長鏡頭,但它只是可能會奏效

我從複製的代理數據我瀏覽器,只需用代理替換代理字符串(不要忘記端口)。

WebProxy webproxy = new WebProxy("http://192.168.4.8:8080"); 
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest; 
request.Proxy = webproxy; 
+0

我沒有使用代理服務器,我認爲這不是方式 – 2010-10-22 22:38:11

+0

我並不是指你個人,我試圖推斷應用程序是;因爲你說「Web應用程序是一個Intranet web「。內網是代理服務器還是防火牆服務器? – Prozaker 2010-10-22 23:25:31

+0

感謝您的回答Prozaker,問題解決了。服務器上有2個網絡適配器,有些請求會從阻止訪問的其他網關出來:(這已修復。 – 2010-10-26 21:19:48

相關問題