2015-06-22 40 views
1

在Azure上运行的WebJob似乎没有将< Content>文件(如果是Newer,则复制)放到正确的目录中。使用静态内容文件部署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");

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

有没有办法让这个静态文件适当放下?

+0

当您通过FTP进行部署时,您可以检查文件是否存在。另外,请记住,你只能从webjob的文件夹中读取,你不能写入该位置。 – lopezbertoni

+0

@lopezbertoni我尝试过,但它似乎没有部署在我可以访问的地方?它似乎在本地/ Temp – jsgoupil

+0

您可以从发布配置文件中获取FTP凭据。 Webjob部署到Web应用程序文件夹结构中的app_data文件夹。如果文件未正确部署,您可以随时通过FTP手动复制。也许这有助于:http://stackoverflow.com/questions/27495492/publish-azure-webjob-including-all-items-from-bin-folder/27504190#27504190 – lopezbertoni

回答

0

做一些测试后,该公约是他们做的/斌/释放文件夹的浅拷贝到App_Data文件/工作/连续/ LongTasks/

这意味着,如果有任何文件夹,它们不会被复制。 将“File.cshtml”移至根目录可修复此问题。

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

0

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

var webjobPath = Environment.GetEnvironmentVariable("WEBJOBS_PATH"); 

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

这将返回象d一些路径:\本地的\ Temp \ \工作触发\\ xxeeeexxx.qzx \,它包含内容的文件和文件夹。