2010-10-22 66 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

相关问题