我正在使用DotNetNuke的调度程序来安排任务,我正在寻找我创建的电子邮件模板的物理文件路径。问题是HttpContext为NULL,因为计划任务位于不同的线程上,并且没有http请求。你将如何获得文件的物理路径?
答案 0 :(得分:14)
System.Web.Hosting.HostingEnvironment.MapPath正是您要找的。每当您使用Server或HttpContext.Current对象时,请先检查HostingEnvironment是否符合您的要求。
答案 1 :(得分:1)
有很多方法可以做到这一点,我个人通过将路径信息存储为我的模块的配置选项来解决它,它并不优雅,但它每次都能正常工作。
Joe Brinkman我相信某处有关于如何构建新的HTTPContext以供在调度程序中使用的博客文章。
答案 2 :(得分:0)
由于此过程实际上与网站相关,因此您可以将路径放在配置文件中。
可能不是最好的主意,但它是另一种选择。
答案 3 :(得分:0)
说什么.GetType()。Assembly.Location?
答案 4 :(得分:0)
你能看看大会&像这样的CodeBase路径:
Imports System.Reflection
Imports System.IO
...
Path.GetDirectoryName( Assembly.GetExecutingAssembly().CodeBase )
这种东西并不总是有效,所以我建议做的是写一个包含大量关于程序集的数据的日志,看看这个位置有什么用。当我创建一个要在AppCenter中托管的COM组件时,我必须做些什么来获得类似的东西。我使用它来“获取”应该是什么“APP_BASE”,并设置它,所以app.config文件将正确加载。
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 ...