1

我正在開發一個Windows Phone 8應用程序,在我的應用程序中,我正在調用服務並將一些數據下載到我的應用程序中。windows phone 8應用程序中的httpwebrequest引發「遠程服務器返回錯誤:NotFound。」?

我測試我的應用程序在Windows 8的手機模擬器,很多時候它拋出這個錯誤:

「遠程服務器返回錯誤:NOTFOUND。」

這是我如何創建並使用我的HttpWebRequest: -

public async Task<string> ServiceRequest(string serviceurl, string request, string methodname) 
     { 
      string response = ""; 
      try 
      { 

       var httpwebrequest = WebRequest.Create(new Uri(serviceurl)) as HttpWebRequest; 
       httpwebrequest.Method = "POST"; 
       httpwebrequest.Headers["SOAPAction"] = "http://tempuri.org/" + iTestservice + "/" + methodname + ""; 
       httpwebrequest.ContentType = "text/xml"; 


       byte[] data = Encoding.UTF8.GetBytes(request); 
       using (var requestStream = await Task<Stream>.Factory.FromAsync(httpwebrequest.BeginGetRequestStream, httpwebrequest.EndGetRequestStream, null)) 
       { 
        await requestStream.WriteAsync(data, 0, data.Length); 
       } 

       var httpTask = httpRequest(httpwebrequest); 
      var completeTask = await Task.WhenAny(httpTask, TaskEx.Delay(300000)); 
      if (completeTask == httpTask) 
       return await httpTask; 
      else 
       httpwebrequest.Abort(); 
      throw new TimeoutException("Service Timed Out"); 

     } 
     catch (TimeoutException Tex) 
     { 
      throw Tex; 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
    } 
     public async Task<string> httpRequest(HttpWebRequest request) 
     { 
      string received; 

      using (var response = (HttpWebResponse)(await Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null))) 
      { 
       using (var responseStream = response.GetResponseStream()) 
       { 
        using (var sr = new StreamReader(responseStream)) 
        { 

         received = await sr.ReadToEndAsync(); 
        } 
       } 
      } 

      return received; 
     } 

我真的無法弄清楚究竟是什麼問題

請注意: -

我試圖在我的模擬器瀏覽器中打開該網站(我的應用嘗試訪問的服務URL),它正確打開,我沒有遇到任何問題。

1)是我的代碼的問題,如果是的話,我請求你,請糾正我?

2)這是任何模擬器問題或任何連接問題?

3)這是否在模擬器中打開任何認證問題?

即使經過長時間的研究以解決問題,我無法解決它。

請幫幫我。

在此先感謝。

+0

如果你可以嘗試使用Fiddler工具(HTTP:// WWW .fiddler2.com/fiddler2 /)查看模擬器和服務器之間的網絡流量。然而,設置它可能有點費勁,而且在某些公司網絡上被阻止。 – 2013-03-02 08:31:34

+0

首先感謝您的回覆,即使是在提琴手我無法找出問題,以及在博客中,他們建議關閉小提琴手時運行應用程序。因爲當Fiddler連接到網絡堆棧時可能會導致問題。會有任何其他問題產生這個問題? 我想知道即使我們已經在真實設備中部署應用程序也會提出這個問題,否則這種情況只發生在模擬器中? 請讓我知道。 在此先感謝。 – user1516781 2013-03-03 05:38:06

+0

如果您嘗試使用手機並且運行正常,則可能是PC的有線網絡存在問題。如果你從來沒有得到它的工作,那麼認證是你最擔心的問題。 – 2013-03-03 10:31:49

回答

0

當web服務請求花費的時間超過60秒時,我遇到過這個問題。我已經閱讀過報告,模擬器不會拋出這個錯誤,但只是一個實際的設備。然而,根據我的經驗,我在仿真器和設備上都發生過這種情況。這是一個默認的超時設置,即使您在配置中更改它也不能更改。這個問題自WP7以來一直存在。

我只在其他地方發現這個問題詢問/博客。似乎沒有很多人選擇這個。

AFAIK,微軟知道這一點,但不打算修復它。 (事實證明它自WP7以來一直存在,而WP8並不固定)。我的猜測是,他們認爲網絡電話在任何情況下都不應超過60秒。

相關問題