2009-10-04 4 views
2

Je crée un service WCF qui va télécharger & télécharger des fichiers XML. Lorsque vous essayez de télécharger un fichier sur un client, il me donne l'erreur suivante:Téléchargement du fichier de service WCf

"Le type de contenu text/html; charset = utf-8 du message de réponse ne correspond pas au type de contenu de la liaison (multipart/Si vous utilisez un encodeur personnalisé, assurez-vous que la méthode IsContentTypeSupported est implémentée correctement Les 1024 premiers octets de la réponse sont: \ nhttp: //www.w3. org/1999/xhtml \ "> \ n \ nIIS 7.0 Erreur détaillée - 500.19 - Erreur de serveur interne \ n \ n

J'utilise basicHTTPBinding comme protocole de liaison. Mon webservice est actuellement hébergé sur mon propre PC sous IIS7.0 sous Vista Home Premium. Le code de téléchargement dans le service que je me sers est le suivant:

public Stream Download(string path) 
    { 
     try 
     { 
      using (FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read)) 
      { 

       return stream; 
      } 
     } 
     catch (Exception ex) 
     { 
      string error = ex.Message; 

      return null; 
     } 
    } 

Le code sur mon client qui est censé télécharger le fichier est le suivant, en utilisant simplement un fichier de test ordinaire:

System.IO.FileStream fs; 
     try 
     { 
      fs = (System.IO.FileStream)client.Download(@"C:\UploadedFiles\Test.txt"); 
      byte[] arr = new byte[fs.Length]; 
      int read; 
      do 
      { 
       read = fs.Read(arr, 0, arr.Length); 

      } while (read != arr.Length); 

      Console.WriteLine(ASCIIEncoding.ASCII.GetString(arr)); 
      Console.ReadLine(); 
     } 
     catch (Exception Ex) 
     { 
      string error = Ex.Message; 
      string inner = Ex.InnerException.ToString(); ; 
      Console.WriteLine("Exception: {0}/nInner Exception: {1}",error,inner); 
      Console.ReadLine(); 
     } 

Quelqu'un s'il vous plaît aidez-moi, je ne comprends pas ce qui ne va pas?

Si vous avez besoin de plus de données pour m'aider à résoudre, faites le moi savoir.

Merci beaucoup, T

Répondre

1

La « Erreur interne du serveur » devrait vous avertir qu'il est le serveur qui a un problème « au service » le service. Votre code n'a même pas la chance d'être exécuté, donc ce n'est pas le coupable. Vous devez vous assurer que IIS est correctement configuré.

Commencez par vérifier que votre mode d'authentification est correct. Si vous utilisez une usurpation d'identité, vous devrez également activer cette option. Si vous avez utilisé ASP.NET Development Server (celui qui démarre automatiquement sur votre machine lorsque vous démarrez le débogage), vous devez savoir qu'il est plutôt laxiste en ce qui concerne votre configuration. IIS est pointilleux.

À peu près toutes les modifications que vous apportez dans IIS peuvent également se refléter dans votre fichier web.config, alors n'oubliez pas les modifications que vous avez apportées à IIS et reflétez ces modifications dans votre fichier web.config. Cela garantit que les problèmes ne se reproduisent plus (par exemple, après une autre construction). Si votre projet est une «application de service WCF», vous devriez pouvoir afficher un message d'erreur plus détaillé en vous connectant au serveur sur lequel vous hébergez le service et en affichant le fichier .svc depuis le navigateur.

+0

Pourriez-vous m'aider à le configurer? Je n'ai pas beaucoup d'expérience en la matière. Je n'ai jamais exécuté un service WCF sur IIS7.0. Peut-être connaissez-vous un bon tutoriel pour m'aider à le configurer? –

+0

aller à: http: //localhost/xmlLoadService/login.aspx ReturnUrl =/xmlLoadService/Service.svc Je reçois cette erreur: Erreur HTTP 401.2 - Non autorisé Vous n'êtes pas autorisé à afficher cette page en raison de têtes d'authentification invalides? . –

+0

Je viens d'éditer et ajouté plus d'informations. Connectez-vous à votre serveur et affichez le fichier .svc à partir de votre navigateur et vous obtiendrez un message d'erreur détaillé. Si le message d'erreur vous a toujours dérouté, tapez-le simplement dans Google et vous trouverez rapidement une réponse. Continuez à répéter ces étapes jusqu'à ce que vous l'ayez fonctionné. :) –

Questions connexes