2010-11-23 13 views
0

Semble être une chose simple en utilisant un objet WebClient pour récupérer le contenu d'un fichier texte dans une application Web Silverlight.Utilisation de Silverlight 4 WebClient OpenReadCompleted via Security Exceptions sur le serveur Web hébergé. Quel est le pronoblème?

Il fonctionne dans notre configuration intranet sur un serveur local, mais lorsqu'il est déployé sur un serveur hébergé "hostgator", WebClient reçoit une exception de sécurité. Suite à des suggestions de nombreux blogs Web, j'ai essayé la politique d'accès crossdomain et crossdomain.xml sans résultat - pas étonnant, tous sur le même domaine.

private void LoadCSVFile(string csvFile) 
    { 
     try 
     { 
      WebClient client = new WebClient(); 

      client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted); 
      client.OpenReadAsync(new Uri(csvFile, UriKind.Absolute)); 
     } 
     catch (Exception ex) 
     { 
      string errorMessage = String.Format("Ex accessing csv: {0}\n{1}", csvFile, 

}}

// le csvFile est un chemin absolu: http://myserver.com/myapplication:port/sourcefiles/file.csv // Le SourceFiles est un répertoire virtuel dans le même site contenant des fichiers csv

void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
    { 
     if (e.Error == null) 
     { 
      try 
      { 
       using (System.IO.StreamReader reader = new System.IO.StreamReader(e.Result)) 
       { 
        mainFileData = new List<string>(); 
        string line; 
             } 
      } 
      catch (Exception ex) 
      { 
       string errorMessage = ex.InnerException; 

} else { "ici est l'endroit pour l'exception !!!!!!!, donc, e.Error n'est pas nul" } }

Le texte de l'exception lit: System.SecurityException: erreur de sécurité à System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse (IAsyncResult asyncResult), etc.

Passez 2 jours gooogling sans résultat.

Aidez-nous s'il vous plaît. V

Répondre

1

Un couple de choses à vérifier:

(1) Le format de l'URL que vous liste (http://myserver.com/myapplication:port/sourcefiles/file.csv) semble étrange. Ne devrait-il pas être http://myserver.com:port/myapplication/sourcefiles/file.csv? Ou est-ce juste une faute de frappe?

(2) Quel est le numéro de port auquel vous accédez? Silverlight WebClient n'accède qu'aux ports 80 et 443.

(3) Pouvez-vous accéder au fichier en utilisant une URL directe? Parfois, les serveurs Web doivent être informés d'un type de fichier spécifique avant de pouvoir être servis.

+0

Ken, merci pour votre réponse: (1) l'url complète = myworks.com/$ sitepreview/myworks.com: 8091/sourcefiles/file1.csv. - oui, juste une faute de frappe (2) sur l'intranet j'accède aux fichiers sur le port 8091 très bien. (3) voici quelque chose. Comment demander au serveur de saisir le type de fichier "cvs"? – val

+0

Ken, merci encore, vous m'avez donné un indice et je viens de résoudre le problème. J'ai simplement dû mettre le répertoire virtuel pour accepter les scripts - c'était la cause de l'exception de sécurité. À votre santé – val