2010-10-12 5 views
1

J'ai un projet ASP.NET sur lequel je travaille actuellement. Il y a un fichier C# (dbedit.cs) qui est utilisé pour accéder directement et éditer 2 fichiers de base de données XML. Comment puis-je créer un chemin relatif des fichiers XML (tous deux dans le même répertoire) vers dbedit.cs? Il doit être portable afin qu'il ne puisse pas être codé en dur. Dbedit.cs est également accessible à partir de deux autres projets qui sont dans la même solution, donc le chemin d'assemblage de dbedit.cs est différent selon le projet qui y accède .Chemin relatif ASP.NET

Cela ne fonctionne pas pour cette raison:

Toute aide serait grandement appréciée.

Répondre

2

Vous pouvez utiliser quelque chose comme HttpContext.Current.Server.MapPath. Cela doit être un projet web cependant.

[Modifier] Voici la documentation pour MapPath: http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.mappath.aspx

+0

Cela ne fonctionne pas parce que dbedit.cs est un fichier régulier de C#, donc il n'y a pas HttpContext qui peut être appelé à ce sujet. Il est accessible par plusieurs pages ASPX, ainsi que par un formulaire Windows utilisé comme interface graphique pour éditer les fichiers XML. – jnevelson

+0

Vous y accédez aussi par un gui, eh bien il y a un problème. Parce que quand on y accède à partir d'un aspx, même s'il s'agit d'un fichier C# normal, HttpContext est toujours disponible. Je vais probablement résoudre cela en vérifiant si c'est une application web, puis appeler le code ci-dessus, sinon obtenir le répertoire de travail d'assemblage que de le concaténer avec le chemin relatif (google it). Quelque chose comme 'si (HttpContext.Current == null) renvoie Path.Combine (Path.GetDirectoryName (Assembly.GetAssembly (typeof (MaClasse)). CodeBase), relativePath); else renvoie HttpContext.Current.Server.MapPath (relativePath); Je n'ai pas essayé cela. – Alxandr