【问题标题】:Deploying a WebJob with a static Content file使用静态内容文件部署 WebJob
【发布时间】:2015-06-22 22:36:22
【问题描述】:

在 Azure 上运行的 WebJob 似乎没有将 文件(如果较新则复制)放到正确的目录中。

我收到以下错误:

System.IO.DirectoryNotFoundException: Could not find a part of the path 'D:\local\Temp\jobs\continuous\LongTasks\lprysn1r.tsv\Content\File.cshtml

我尝试访问该文件: File.ReadAllText("Content/File.cshtml");

在本地运行时,它工作得很好。

有没有办法适当地删除这个静态文件?

【问题讨论】:

  • 您可以在通过 FTP 部署时检查文件是否存在。另外,请记住,您只能从 webjob 的文件夹中读取,您将无法写入该位置。
  • @lopezbertoni 我试过了,但它似乎没有部署在我可以访问的地方?它似乎在本地/临时
  • 您可以从发布配置文件中获取 FTP 凭据。 webjob 部署到 web 应用程序文件夹结构中的 app_data 文件夹。如果文件未正确部署,您始终可以通过 FTP 手动复制它。也许这有帮助:stackoverflow.com/questions/27495492/…

标签: azure-webjobs


【解决方案1】:

在做了一些测试之后,惯例是他们将 /bin/Release 文件夹的浅拷贝复制到 App_Data/jobs/continuous/LongTasks/

这意味着,如果有任何文件夹,它们不会被复制。 将“File.cshtml”移动到根目录可以解决这个问题。

我知道这与 Azure WebJobs SDK 并不完全相关,但这发生在 2015 年 6 月 22 日,版本为 1.0.0。

【讨论】:

    【解决方案2】:

    您应该为当前运行的 webjob 使用 WEBJOBS_PATH 环境变量。

    var webjobPath = Environment.GetEnvironmentVariable("WEBJOBS_PATH");
    
    if (string.IsNullOrWhiteSpace(webjobPath))
    {
       // Handle dev environment
       webjobPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
    }
    

    这将返回一些路径,例如 D:\local\Temp\jobs\triggered\\xxeeeexxx.qzx\,其中包含您的内容文件和文件夹。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-27
      • 2019-07-18
      • 2015-07-15
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多