C # 2008 SP1
Estou usando o código abaixo:
dt.ReadXml("%AppData%\\DateLinks.xml");
No entanto, estou recebendo uma exceção que aponta para o local de onde meu aplicativo está sendo executado:
Não foi possível encontrar uma parte do caminho 'D: \ Projetos \ SubVersionProjects \ CatDialer \ bin \ Debug \% AppData% \ DateLinks.xml'.
Eu pensei que o %AppData%
deveria encontrar o caminho relativo. Quando vou, o Start|Run|%AppData%
Windows Explorer me leva para esse diretório.
Não consigo inserir o caminho completo, pois o usuário é diferente em cada máquina cliente.
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
retorna uma string vazia para mim (IIS 7, VS 2011). Problema resolvido usando a solução Simon_Weaver - mapeando usandoMapPath
.O caminho é diferente se você estiver falando do ASP.NET.
Não consegui encontrar nenhum dos valores de 'SpecialFolder' que apontavam para / App_Data for ASP.NET.
Em vez disso, você precisa fazer o seguinte:
(Nota: você não precisa da propriedade 'Current' em um MVC Controller)
Se há outra maneira mais "abstrata" de chegar
App_Data
, adoraria ouvir como.fonte
HostingEnvironment.MapPath(@"~/App_Data")
é melhor e funciona nos contextos MVC / WebAPI e WCF, onde não há HttpContext - mas não tenho certeza sobre o núcleo 'A melhor maneira de usar o diretório AppData, é usar o
Environment.ExpandEnvironmentVariable
métodoRazões:
Exemplos:
Lembre-se de que alguns usuários digitam
%AppData%
, alguns%appdata%
e alguns%APpData%
Você não deseja terminar com:Se a variável de ambiente não estiver definida, a culpa não é sua (além de quando IS ). Normalmente, não digo às pessoas para não reinventarem a roda, mas depois que segui o caminho pela primeira vez e percebi que era uma má ideia.
fonte
path
variável :)Environment.ExpandEnvironmentVariable
é melhor quando você simplesmente precisa expandir, independentemente de quais ambientes possam estar na cadeia de caminho.Você também pode usar
para expandir a
%AppData%
variável.fonte
No .net2.0 você pode usar a variável
Application.UserAppDataPath
fonte
Eu não acho que colocar% AppData% em uma string assim funcionará.
tentar
fonte
Só queria compartilhar outra maneira de acessar a pasta 'App_Data' no meu aplicativo mvc, caso alguém precise disso.
fonte
Isso está funcionando para mim em um aplicativo de console -
fonte
Para o ASP.NET, a
Load User Profile
configuração precisa ser definida no pool de aplicativos, mas isso não é suficiente. Há uma configuração oculta denominadasetProfileEnvironment
in\Windows\System32\inetsrv\Config\applicationHost.config
, que por algum motivo é desativada por padrão, em vez de ativada conforme descrito na documentação . Você pode alterar o padrão ou configurá-lo no seu pool de aplicativos. Todos os métodos daEnvironment
classe retornarão valores adequados.fonte