Domanda

Sto lavorando con lo scheduler di DotNetNuke per pianificare le attività e sto cercando di ottenere il percorso del file fisico di un modello di posta elettronica che ho creato. Il problema è che HttpContext è NULL perché l'attività pianificata si trova su un thread diverso e non esiste una richiesta http. Come faresti per ottenere il percorso fisico del file?

È stato utile?

Soluzione

System.Web.Hosting.HostingEnvironment. MapPath è quello che stai cercando. Ogni volta che usi gli oggetti Server o HttpContext.Current, controlla prima se HostingEnvironment ha ciò di cui hai bisogno.

Altri suggerimenti

Esistono molti modi per farlo, personalmente mi aggiro memorizzando le informazioni sul percorso come un'opzione di configurazione per i miei moduli, non è elegante, ma funziona e funziona ogni volta.

Joe Brinkman Credo che da qualche parte ci sia un post sul blog su come costruire un nuovo HTTPContext da usare all'interno dello scheduler.

Poiché questo processo è davvero fuori banda rispetto al sito Web, forse puoi semplicemente inserire il percorso in un file di configurazione.

Potrebbe non essere la migliore idea, ma è un'alternativa.

cosa dice this.GetType (). Assembly.Location?

Puoi guardare l'Assemblea & amp; i percorsi CodeBase come questo:

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

Questo tipo di cose non sempre funziona, quindi quello che consiglierei di scrivere è un registro con un mucchio di dati sull'assemblaggio, per vedere cosa funziona in questa posizione. È quello che dovevo fare per ottenere qualcosa di simile quando stavo creando un componente COM da ospitare in AppCenter. L'ho usato per " ottenere " cosa " APP_BASE " dovrebbe essere e impostarlo, in modo che il file app.config venga caricato correttamente.

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 ...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top