2009-11-07 113 views
0

我構建了google maps和weather.com的混搭,每次其中一個服務器沒有響應時,我的應用程序也會掛起。您認爲我可以做些什麼來防止或最小化掛起我的Web應用程序?像你無法離開那個頁面一樣掛起...... 我在應用程序代碼上獲得了這段代碼以訪問天氣服務; 捕獲錯誤或異常


Public Class WeatherIn 
    Private _path As String 
    Private _cachedFile As String 
    Public Sub New(ByVal path As String) 
     _path = path 
     _cachedFile = String.Format("{0}\WeatherInCache.xml", _path) 
    End Sub

Public Function GetWeather(ByVal arg As String) As String 

    Return _getWebWeather(arg) 

End Function 

Private Function _getCachedWeather() As String 
    Dim str As String = String.Empty 


    Using reader As New StreamReader(_cachedFile) 
     str = reader.ReadToEnd() 
    End Using 


    Return str 
End Function 

專用功能_getWebWeather(BYVAL ARG作爲字符串)作爲字符串

Dim baseUrl As String = "http://xoap.weather.com/weather/local/{0}?cc=*&dayf=5&link=xoap&prod=xoap&par={1}&key={2}" 
    Dim jane As String = arg 
    Dim james As String = "api key" 
    Dim john As String = "another api key" 

    Dim url As String = String.Format(baseUrl, jane, james, john) 


    Using client As New WebClient() 

     Try 

      Dim xml As New XmlTextReader(client.OpenRead(url)) 


      Dim xslt As New XslCompiledTransform() 
      xslt.Load(_path + "/Pathto.xslt") 


      Using writer As New StreamWriter(_cachedFile) 
       xslt.Transform(xml, Nothing, writer) 
      End Using 


      Return _getCachedWeather() 
     Catch exception As WebException 

      Dim xmlStr As String = "<errorDoc>" 
      xmlStr += "<alert>An Error Occurred!</alert>" 
      xmlStr += [String].Format("<message>{0}</message>", exception.Message) 
      xmlStr += "</errorDoc>" 


      Dim doc As New XmlDocument() 
      doc.LoadXml(xmlStr) 


      Dim reader As New XmlNodeReader(doc) 

      Dim xslt As New XslCompiledTransform() 
      xslt.Load(_path + "/Pathto.xslt") 


      Dim resultDocument As New XmlDocument() 
      Using writer As XmlWriter = resultDocument.CreateNavigator().AppendChild() 
       xslt.Transform(reader, DirectCast(Nothing, XsltArgumentList), writer) 
      End Using 

      Return resultDocument.OuterXml 
     End Try 
    End Using 
End Function 

然後我用的類上面我的網頁上,我顯示這樣的天氣:



'specific zip code or could be retrieved from querystring for dynamic retrieval 

var jay="94576" 

Dim weather As New WeatherIn(Server.MapPath(String.Empty)) 
       Dim weatherData As String = weather.GetWeather(jay) 


       Response.ContentType = "text/xml" 
       Response.CacheControl = "no-cache" 

       Response.Write(weatherData) 

其中我檢索數據並通過javascript寫在頁面上。大多數時候它的weather.com,這是down.I沒有任何問題,谷歌地圖其可靠....任何人有解決方案爲什麼我的網頁掛起太遠,如果遠程服務器沒有響應?如果遠程服務器響應mashup運行順利。 ..

+0

你是如何訪問這些網站?你能顯示發送請求的代碼嗎? – 2009-11-07 10:14:43

回答

0

當依賴於外部Web服務時,最好異步加載,以便如果其中一個緩慢,您可以向頁面查看器顯示某種加載微調器。如果失敗,您的頁面可能會簡單地報告從Web服務器讀取失敗並稍後再試。

在這種情況下,我會加載帶有Google地圖的頁面,然後對Weather數據發出AJAX請求。

+0

是的,我通過ajax捕獲的天氣數據在另一個頁面.....其中谷歌地圖也顯示 – jamal 2009-11-08 01:37:01