2009-01-30 55 views
0

我有一個網絡服務,我通過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

回答

0

我使用了SDF 2.3的Ping組件。錯誤總是超時,並且只發生在Web服務錯誤時。仍然無法解釋,但我想我做的支票無論如何都是一種糟糕的方式。

0

我在PDA和互聯網之間的鏈接失敗時經歷過類似的事情。 WebRequest自動打開GPRS/HSDPA連接,可能在該級別存在問題。

0

我得到的錯誤只是一個超時。即它直到30秒過去,然後摔倒。令人討厭的是它只發生在Web服務失敗或超時時。這就像Web服務失敗正在鎖定虛擬目錄。

pda和網絡之間的網絡連接沒有問題。網絡服務位於我的網絡上,因此互聯網不起作用。我只是使用ActiveSync連接讓我的PDA與網絡通話。

0

我發現問題的一半是設備數據連接。嘗試在設備上手動輸入url到pocket IE中。如果那有效,那麼你的應用應該工作。如果沒有,那麼你需要先清理你的設備數據連接設置。如果通過ActiveSync(或WMDC)連接嘗試更改Auto/Work/Internet之間的連接設置,有時會有所幫助。

至於如何測試,看看網址是否存在。使用HEAD請求而不是GET請求。這樣你就不會得到所有數據只是返回的頭文件。我不是一個C#人,所以我不能幫助如何執行HEAD請求而不是GET請求。

0

網址始終適用於移動設備上的IE瀏覽器 - 它只是不適用於應用程序。所以它就好像應用程序被鎖定在請求之外,或者我的測試代碼有問題(按照我原來的帖子)。

0

是的,擺脫捕捉所有並獲得一個特定的異常信息,以便您可以告訴更多關於發生了什麼事情。

當我在CF.NET中工作時,發現我在System.Net.HttpWebRequest.finishGetResponse()中遇到了很多錯誤,並且由於信號不佳,它們很可能會中斷數據連接。