【问题标题】:Map path in Quartz.net in ASP.NET & C#在 ASP.NET 和 C# 中的 Quartz.net 中映射路径
【发布时间】:2016-06-25 08:30:53
【问题描述】:

我在 Asp.Net C# 中使用 Quartz.Net 来安排我的任务。我想写入文件,当我尝试不使用MapPath 时,它会按预期写入文件(Hello world)。

这是我写的代码。我试过HostingEnvironment.MapPathServer.MapPath。它只是写没有任何内容的文件。

public void Execute(IJobExecutionContext context)
{
    StreamWriter file = new StreamWriter("destination_actualPath\\hello1.txt", true);
    file.WriteLine("Hello world " + Server.MapPath("../Data"));
    file.Close();
}

是的,这个文件夹Data 确实存在于我的项目目录中。这个函数在IJob 类中。如果我编写了一个新方法(除了执行),它正在写入文件(hello world 和路径),如果它在这个 Execute 方法中,它不会向文件写入任何内容。

【问题讨论】:

  • “不工作”不是正确的问题描述。请阅读How to Ask 并提供所有相关信息和您的研究。另外,我希望您意识到 Web 服务器无法写入客户端的桌面。它在开发期间工作,因为您的机器当时既充当服务器又充当客户端。
  • 写入桌面不是问题。问题是读取路径Server.MapPath("../Data")
  • 我在问是什么问题。您预计会发生什么,实际会发生什么?
  • 我想将Server.MapPath("../Data") 写入我的文件 hello1.txt。它正在创建文件 hello1.txt 如果不存在,但它是空的,里面没有内容,甚至没有打印“Hello world”
  • 我明白这一点。请说出这段代码的实际作用。如果您不解释发生了什么,我们无法给您答案。

标签: asp.net quartz-scheduler quartz.net server.mappath


【解决方案1】:

试试

file2.WriteLine("Hello World " + System.Web.Hosting.HostingEnvironment.MapPath("~/Data"));

HttpContext 在 Quartz.net 中是不允许的,所以我们必须使用 HostingEnvironment 来代替。这里我们通常使用~ 来引用虚拟路径,而不是../。我想这是你的错误。

【讨论】:

    【解决方案2】:

    您可以使用 System.Web.Hosting.HostingEnvironment.MapPath 方法。

    【讨论】:

    • 我尝试了 System.Web.Hosting.HostingEnvironment.MapPath 和 httpcontext.current.server.mappath
    • 这个问题没用
    猜你喜欢
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多