2009-11-07 10 views
0

J'ai construit un mashup de google maps et weather.com et chaque fois que l'un de ces serveurs ne répond pas, mon application raccroche aussi.Que pensez-vous que je puisse faire pour empêcher ou minimiser la suspension de mes applications web Raccrocher comme vous ne pouvez pas naviguer loin de cette page .... J'ai reçu ce code sur mon code d'application pour accéder au service météo; Attraper des erreurs ou des exceptions


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 

Fonction privée _getWebWeather (ByVal arg As String) As String

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 

J'ai ensuite utilisé la classe ci-dessus sur ma page où j'afficher la météo comme ceci:



'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) 

dont je récupère les données et écris sur la page via javascript.La plupart du temps c'est le weather.com qui descend.Je n'ai pas de problème avec google map son fiable .... quelqu'un a une solution pourquoi ma page raccroche aussi si le serveur distant ne répond pas? Le mashup fonctionne correctement si le serveur distant répond.

+0

Comment accédez-vous à ces sites? Pourriez-vous montrer le code qui envoie la demande? –

Répondre

0

Lorsque vous dépendez de services Web externes, il est préférable de charger de manière asynchrone. Ainsi, si l'un d'entre eux est lent, vous pouvez afficher une sorte de spinner de chargement dans la visionneuse de pages. En cas d'échec, votre page pourrait simplement signaler que la lecture du serveur Web a échoué et réessayer plus tard.

Dans ce cas, je voudrais charger la page avec la carte Google en place et ensuite faire une demande AJAX pour les données météorologiques.

+0

Oui, j'ai capturé les données météorologiques par ajax sur une autre page ..... où google map est également affichée – jamal

Questions connexes