C # 2008 SP1
J'utilise le code ci-dessous:
dt.ReadXml("%AppData%\\DateLinks.xml");
Cependant, je reçois une exception qui pointe vers l'emplacement à partir duquel mon application s'exécute:
Impossible de trouver une partie du chemin "D: \ Projects \ SubVersionProjects \ CatDialer \ bin \ Debug \% AppData% \ DateLinks.xml".
Je pensais que le %AppData%
devrait trouver le chemin relatif. Quand j'y vais Start|Run|%AppData%
, l'explorateur Windows m'amène dans ce répertoire.
Je ne peux pas mettre le chemin complet, car l'utilisateur est différent sur chaque machine client.
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
renvoie une chaîne vide pour moi (IIS 7, VS 2011). Problème résolu en utilisant la solution Simon_Weaver - cartographie en utilisantMapPath
.Le chemin est différent si vous parlez d'ASP.NET.
Je n'ai trouvé aucune des valeurs «SpecialFolder» qui pointaient vers / App_Data pour ASP.NET.
Au lieu de cela, vous devez faire ceci:
(Remarque: vous n'avez pas besoin de la propriété 'Current' dans un contrôleur MVC)
S'il y a une autre façon plus «abstraite» d'arriver,
App_Data
j'aimerais savoir comment.la source
HostingEnvironment.MapPath(@"~/App_Data")
est meilleur et fonctionne dans les contextes MVC / WebAPI et WCF où il n'y a pas de HttpContext - mais pas sûr du noyau 'La meilleure façon d'utiliser le répertoire AppData, IS à utiliser la
Environment.ExpandEnvironmentVariable
méthode.Les raisons:
Exemples:
Rappelez-vous que certains utilisateurs tapent
%AppData%
, certains%appdata%
et certains%APpData%
Vous ne voulez pas vous retrouver avec:Si la variable d'environnement n'est pas définie, ce n'est pas de votre faute (d'ailleurs quand elle EST ). Je ne dis généralement pas aux gens de ne pas réinventer la roue, mais après je suis allé dans l'autre sens et j'ai réalisé que c'était une mauvaise idée.
la source
path
variable :)Environment.ExpandEnvironmentVariable
est préférable lorsque vous avez simplement besoin de développer quelle que soit la variable env qui peut se trouver dans la chaîne de chemin.Vous pouvez aussi utiliser
pour développer la
%AppData%
variable.la source
Dans .net2.0, vous pouvez utiliser la variable
Application.UserAppDataPath
la source
Je ne pense pas que mettre% AppData% dans une chaîne comme celle-ci fonctionnera.
essayer
la source
Je voulais juste partager une autre façon d'accéder au dossier 'App_Data' dans mon application mvc au cas où quelqu'un en aurait besoin.
la source
Cela fonctionne pour moi dans une application console -
la source
Pour ASP.NET, le
Load User Profile
paramètre doit être défini sur le pool d'applications, mais cela ne suffit pas. Il y a un paramètre caché nommésetProfileEnvironment
dans\Windows\System32\inetsrv\Config\applicationHost.config
, ce qui pour une raison quelconque est désactivée par défaut, plutôt que sur la manière décrite dans la documentation . Vous pouvez modifier la valeur par défaut ou la définir dans votre pool d'applications. Toutes les méthodes de laEnvironment
classe renverront alors les valeurs appropriées.la source