2009-09-02 4 views
2

service WCF est une méthode (Disons que TestMethod) dans lequel je tente de créer un flux de fichier comme ceci:Problème lors de la lecture d'un fichier xml en service WCF

  System.IO.FileStream fs = new System.IO.FileStream(@"D:\Test.xml", System.IO.FileMode.Open); 

Mon client et le service est sur la même solution .

Lorsque le client effectue un appel à TestMethod (exposé dans le service Web), il donnera cette erreur:

L'accès au chemin 'D: \ DXDirectoryAuth.xml' est refusé.

Aidez-nous!

Répondre

3

Avez-vous essayé:

System.IO.FileStream fs = new System.IO.FileStream(@"D:\Test.xml", System.IO.FileMode.Open, System.IO.FileAccess.Read); 

Le constructeur par défaut de FileStream() demande un accès en lecture et en écriture.

+0

Ce n'est pas très intuitif. Changer le mode d'accès aux fichiers a également résolu mon problème. Merci! – Doug

0

Sécurité!

La raison d'être que vous essayez d'accéder à un emplacement de fichier en dehors du répertoire où vous avez hébergé votre service WCF ...

Vous êtes soit allez devoir accorder le compte de la WCF fonctionne sous autorisations ce répertoire ou déplacez le fichier dans le répertoire \ sous-répertoire où vous hébergez le service WCF.

Ollie

+0

Merci Ollie .. pouvez-vous s'il vous plaît me guider comment puis-je y parvenir ?? Mon dossier de service est "MyService", j'ai mis le fichier xml dans le dossier MyService .. mais encore il donne cette erreur –

8

D'accord, si vous avez mis le fichier dans le répertoire ou un sous-répertoire de votre service WCF, vous devriez être en mesure d'accéder au fichier sans aucun problème d'autorisations.

La question est de savoir comment vous essayez d'accéder au fichier?

Vous devriez probablement obtenir le répertoire actuel du service, puis ajoutez l'emplacement du fichier par rapport sur le répertoire courant et puis essayez d'ouvrir le fichier quelque chose comme ceci:

var appPath = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath; 
bodyFile = Path.Combine(appPath, @"templates\email.txt"); 

var body = File.OpenText(bodyFile).ReadToEnd(); 

HTH

Ollie