WebClient DownloadData SocketException

时间:2017-08-03 20:28:22

标签: c# asp.net visual-studio iis

这是一个非常受欢迎的主题,我已经阅读了至少二十种不同的stackoverflow,expertsexchange,codeproject“解决方案”,它们归结为:代理服务器(他们保证我没有被使用),以及其他对我没有帮助的事情。

我有一张坐在这台服务器上的图片。它可以通过URL公开到达(我不会在这里给出,因为这是一个客户服务器)。 公开的URL是通过IIS设置的虚拟目录。

我打开了Visual Studio并创建了一个新的ASP.NET Web应用程序 - 我把它作为一个空项目,并为其添加了一个WebForm。简单就可以了。

我添加的唯一代码是WebForm Page_Load函数:

    protected void Page_Load(object sender, EventArgs e)
    {
        using (System.Net.WebClient wc = new System.Net.WebClient())
        {
            Uri myUri = new Uri(@"http://SERVER/folder/Image.bmp", UriKind.Absolute);
            byte[] bytes = wc.DownloadData(myUri);
        }
    }

就是这样。这就是我所做的一切。

因为该URL是公开公开的,所以当我在Visual Studio中运行它时。它有效。

此外,在工作中,我有一个带有IIS的Web服务器(Windows Server 2008 R2 Standard附带的IIS - Service Pack 1)。我刚刚复制了我的整个项目文件夹(在我构建发布之后),将它放在inetpub / wwwroot /上,转到IIS,将其添加为应用程序(使用匿名访问和默认应用程序池)。

在这里,在工作中,没问题!没有错误。

现在,我对他们的服务器做了同样的事情。只需拿整个文件夹。创建一个应用程序等等....一旦我得到了DownloadData代码,我得到一个例外:

A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond [redacted]:80 
  Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

 Exception Details: System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond [redacted]:80

Source Error:     

 An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace:        

[SocketException (0x274c): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond [redacted]:80]
   System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) +8409635
   System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception) +611

[WebException: Unable to connect to the remote server]
   System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request) +365
   System.Net.WebClient.DownloadData(Uri address) +111
   WebClientTest.WebForm1.Page_Load(Object sender, EventArgs e) in c:\Users\[me!!!]\Documents\Visual Studio 2013\Projects\WebClientTest\WebClientTest\WebForm1.aspx.cs:18
   System.Web.UI.Control.OnLoad(EventArgs e) +103
   System.Web.UI.Control.LoadRecursive() +68
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3811

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.7.2053.0 

所以,回顾一下:

简单项目在我的调试环境中工作。校验! 在我的服务器上工作。校验! 在客户端服务器上不起作用。不检查!

必须有一些解释。显然我可以看到主持人。那么,为什么当他们托管这些代码而不是我时,它是否无法建立连接?查找此信息或可能导致此信息的信息非常困难。它必须是某种类型的服务器设置,对吧?

他们的服务器是Windows Server 2012 R2 Standard。

编辑:我还想提一下,我可以在任何地方打开浏览器(我的桌面,托管我的调试环境的VM,他们的服务器等),如果我使用该URL,则会显示位图。没问题。一旦IIS / ASP.NET涉及......连接失败。这太令人沮丧了。

EDIT2:我有一个面向公众的云服务器,具有相同的设置(相同类型的虚拟目录,图像等)。所以我在这个项目中添加了第二个WebForm。 PageLoad中的相同代码,这次指向我的服务器的图像,而不是他们的。该页面有效!他们的服务器上确实存在导致这种情况的东西。但是什么?

0 个答案:

没有答案