精简版框架 - WebRequest有时无故失败?

问题描述:

我有一个网络服务,我通过PDA与之交谈。在与web服务asmx文件相同的目录中,我有一个html文件,可以从中提取web请求,以查看目录是否可用。精简版框架 - WebRequest有时无故失败?

我使用下面的代码:

/// <summary> 
    /// Holds the web request for checking the connectivity. 
    /// </summary> 
    private static WebRequest m_WebRequest; 


    /// <summary> 
    /// Tests the connection to the provided URL. 
    /// </summary> 
    /// <param name="url">The URL to test.</param> 
    /// <returns>True if the URL was resolved.</returns> 
    public static bool TestUrl(string url) 
    { 

     try 
     { 


      // Ensure the url is valid 
      url = url.Replace("http:\\", "http://"); 
      url = url.Replace("\\", "/"); 

      // Create the request 
      m_WebRequest = WebRequest.Create(url); 
      m_WebRequest.Timeout = 30000; 

      // Get the request 
      HttpWebResponse response = (HttpWebResponse)m_WebRequest.GetResponse(); 
      return true; 

     } 
     catch 
     { 
      m_WebRequest.Abort(); 
      return false; 
     } 

    } 

文件我得到的是永远不变的,总是从我的电脑访问的响应。它似乎只在web服务(与html文件位于同一目录中)错误时失败。这可能是相关的吗?

或者,有没有更好的方式来查看该文件是否存在于网络上?

+0

你会得到什么错误? – 2009-01-30 11:04:52

我使用了SDF 2.3的Ping组件。错误总是超时,并且只发生在Web服务错误时。仍然无法解释,但我想我做的支票无论如何都是一种糟糕的方式。

我在PDA和互联网之间的链接失败时经历过类似的事情。 WebRequest自动打开GPRS/HSDPA连接,可能在该级别存在问题。

我得到的错误只是一个超时。即它直到30秒过去,然后摔倒。令人讨厌的是它只发生在Web服务失败或超时时。这就像Web服务失败正在锁定虚拟目录。

pda和网络之间的网络连接没有问题。网络服务位于我的网络上,因此互联网不起作用。我只是使用ActiveSync连接让我的PDA与网络通话。

我发现问题的一半是设备数据连接。尝试在设备上手动输入url到pocket IE中。如果那有效,那么你的应用应该工作。如果没有,那么你需要先清理你的设备数据连接设置。如果通过ActiveSync(或WMDC)连接尝试更改Auto/Work/Internet之间的连接设置,有时会有所帮助。

至于如何测试,看看网址是否存在。使用HEAD请求而不是GET请求。这样你就不会得到所有数据只是返回的头文件。我不是一个C#人,所以我不能帮助如何执行HEAD请求而不是GET请求。

网址始终适用于移动设备上的IE浏览器 - 它只是不适用于应用程序。所以它就好像应用程序被锁定在请求之外,或者我的测试代码有问题(按照我原来的帖子)。

是的,摆脱捕捉所有并获得一个特定的异常信息,以便您可以告诉更多关于发生了什么事情。

当我在CF.NET中工作时,发现我在System.Net.HttpWebRequest.finishGetResponse()中遇到了很多错误,并且由于信号不佳,它们很可能会中断数据连接。