Usuário com melhor resposta
Erro de NullReference Exception

Pergunta
-
Olá pessoal,
estou criando um método que simplesmente gera um arquivo de log de erros e coloca-os em uma pasta no servidor. Acontece que está dando um erro. A dúvida é que estou referenciando um caminho no servidor dentro de uma aplicação class library. Será esse o problema?
Eis o código:
public static void GerarArquivoDeLog(Exception ex) { //Deverá gravar um arquivo de log de todos os erros do sistema HttpServerUtility Server = HttpContext.Current.Server;//O erro acontece aqui... string path = Server.MapPath("~/RelatoriosComerciais.ApresentacaoWeb/temp/"); string fileName = "logDeErro" + "_" + DateTime.Now.ToString(); File.Create(path + fileName); StringBuilder sb = new StringBuilder(); sb.Append("Data/Hora do Erro: " + DateTime.Now.ToString()); //sb.Append("Detalhes do Erro: "); sb.Append("Mensagem de erro: " + ex.Message.ToString()); StreamWriter sw = new StreamWriter(path + fileName); sw.WriteLine(sb.ToString()); sw.Close(); }
Respostas
-
Existem algumas alternativas ao Server.MapPath, como:
Maper um caminho virtual para um caminho físico no servidor
System.Web.Hosting.HostingEnvironment.MapPath("/");
Obter o caminho de unidade física de diretório de aplicativo.
HttpRuntime.AppDomainAppPath;
Obtém o diretório base, o resolvedor de assembly...AppDomain.CurrentDomain.BaseDirectory;
Mais detalhes:
http://cbsa.com.br/post/alternativas-ao-servermappath---c.aspx
- Sugerido como Resposta Cesar Cassiano Schimanco sexta-feira, 15 de fevereiro de 2013 20:39
- Marcado como Resposta Seilor Bonancio JuniorModerator segunda-feira, 18 de fevereiro de 2013 11:31
Todas as Respostas
-
Sim , provavelmente é esse o problema , você
terá que mudar o endereço físico , você pode pegar o
endereço físico da seguinte maneira :
Request.PhysicalApplicationPath: - > endereço físico do servidor = EXEMPLO : D:\Inetpub\wwwroot\site\ dá para pegar o endereço final da string Path e manipular , por exemplo , sua biblioteca tem que estar em
\site\Biblioteca , e o endereço a ser manipulado fica em \site\ , você pode simplesmente pegar a string Path
e usar o metodo .Replace para remover a parte que não lhe interessa...
Abraço
Se for útil marcar como resposta Para que outros Aproveitem
- Sugerido como Resposta Jones Roberto quinta-feira, 7 de fevereiro de 2013 20:45
-
Existem algumas alternativas ao Server.MapPath, como:
Maper um caminho virtual para um caminho físico no servidor
System.Web.Hosting.HostingEnvironment.MapPath("/");
Obter o caminho de unidade física de diretório de aplicativo.
HttpRuntime.AppDomainAppPath;
Obtém o diretório base, o resolvedor de assembly...AppDomain.CurrentDomain.BaseDirectory;
Mais detalhes:
http://cbsa.com.br/post/alternativas-ao-servermappath---c.aspx
- Sugerido como Resposta Cesar Cassiano Schimanco sexta-feira, 15 de fevereiro de 2013 20:39
- Marcado como Resposta Seilor Bonancio JuniorModerator segunda-feira, 18 de fevereiro de 2013 11:31
-