Pergunta

Eu estou trabalhando com agendador de DotNetNuke para agendar tarefas e eu estou olhando para obter o caminho do arquivo físico de um modelo de email que eu criei. O problema é que HttpContext é NULL porque a tarefa agendada é em um segmento diferente e não http é pedido. Como você iria sobre a obtenção de caminho físico do arquivo?

Foi útil?

Solução

System.Web.Hosting.HostingEnvironment. MapPath é o que você está procurando. Sempre que você está usando o Server ou HttpContext.Current objetos, verifique primeiro para ver se HostingEnvironment tem o que você precisa.

Outras dicas

Existem muitas maneiras de fazer isso, eu pessoalmente contorná-la, armazenando informações de caminho como uma opção de configuração para os meus módulos, não é elegante, mas funciona e funciona cada vez.

Joe Brinkman Eu acredito em algum lugar ao redor tem um blog sobre como construir uma nova HttpContext para uso dentro do programador.

Uma vez que este processo é realmente out-of-band em relação ao web site, talvez você pode simplesmente colocar o caminho em um arquivo de configuração.

pode não ser a melhor idéia, mas é uma alternativa.

O que diz this.GetType (). Assembly.Location?

Você pode olhar para a Assembleia e os caminhos base de código como este:

Imports System.Reflection
Imports System.IO
...
Path.GetDirectoryName( Assembly.GetExecutingAssembly().CodeBase ) 

Esse tipo de coisa nem sempre funciona, então o que eu recomendaria fazer é escrever um log com um monte de dados sobre a montagem, para ver o que funciona neste local. É o que eu tinha que fazer para conseguir algo semelhante, quando eu estava criando um componente COM para ser hospedado em AppCenter. Eu usei isso para "pegar" o que "APP_BASE" deve ser, e conjunto que, para que o arquivo app.config iria carregar corretamente.

Log.Write ( Assembly.GetExecutingAssembly().CodeBase )
Log.Write ( Assembly.GetExecutingAssembly().Location )
Log.Write ( Path.GetFullPath(".") )
Log.Write ( Application.StartupPath )
... and so on, whatever you can think of ...
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top