По вашему описанию, для локально:
Мы могли бы использовать следующий код, чтобы получить корневой путь WebJob проекта.
rootPath = Path.GetDirectoryName(Path.GetDirectoryName(Directory.GetCurrentDirectory()));
Для Azure:
D:\home
общий для нас, и мы могли прочитать или записать файл на этом пути. Более подробную информацию о доступе к домашнему каталогу см. В разделе document. Структура файла на Azure, пожалуйста, обратитесь к другому document. Мы также можем просмотреть его с помощью инструмента Kudu (http://yourwebsite.scm.azurewebsites.net/).
В качестве удобства для наших клиентов песочница реализует динамическую символическую ссылку в режиме ядра, которая отображает d: \ home в домашний каталог клиента. Это делается для устранения необходимости того, чтобы клиент продолжал ссылаться на свой собственный сетевой общий путь при доступе к сайту. Независимо от того, где сайт работает, или сколько сайтов работает на виртуальной машине, каждый из них может получить доступ к своей домашней директории, используя
rootPath = Environment.GetEnvironmentVariable("HOME") + @"\site\wwwroot"
Если нет переменного окружения «Home» мы могли бы использовать следующий код, чтобы сделать это ,
string path;
if (Environment.GetEnvironmentVariable("HOME")!=null)
{
path = Environment.GetEnvironmentVariable("HOME") + @"\site\wwwroot" + @"\testfilename.txt";
}
else
{
path = Path.GetDirectoryName(Path.GetDirectoryName(Directory.GetCurrentDirectory())) + @"\testfilename.txt";
}
Ниже приведены детали испытаний шаги:
1.Create проект WebJob и test.text тестовый файл и папку в проекте
2.As Я использую таймер триггер в WebJob, поэтому мне нужно добавить config.UseTimers() в program.cs
3. Добавить следующие коды в файл Function.cs
public static void ProcessQueueMessage([TimerTrigger("00:00:03")] TimerInfo timerInfo, TextWriter log)
{
string instance = Environment.GetEnvironmentVariable("WEBSITE_INSTANCE_ID");
string newMsg = $"WEBSITE_INSTANCE_ID:{instance}, timestamp:{DateTime.Now}";
string path;
if (Environment.GetEnvironmentVariable("HOME")!=null)
{
path = Environment.GetEnvironmentVariable("HOME") + @"\site\wwwroot" + @"\test.txt";
}
else
{
path = Path.GetDirectoryName(Path.GetDirectoryName(Directory.GetCurrentDirectory())) + @"\test.txt";
}
string template = File.ReadAllText(path);
log.WriteLine($"NewMsge: {newMsg},file Content:{template}");
Console.WriteLine($"NewMsge: {newMsg},file Content:{template}");
}
4. Проверьте его на локальном компьютере.
5.After развернуть на Azure и получить журнал от Azure WebJob приборной панели.
6.After развернуть на Azure и получить журнал от Azure WebJob приборной панели.