Я создал простой Azure WebJob, который вызывает асинхронную задачу, и я пытаюсь использовать TextWriter
для регистрации некоторой информации. Запись в журнал до вызова задачи async в порядке, но после вызова TextWriter
закрыт. В приведенном ниже примере кода я просто вызываю Task.Delay()
для демонстрации.TextWriter неожиданно закрыт после асинхронного вызова в Azure webjob
Это не имеет значения, если я изменить await log.WriteLineAsync("")
вызовы log.WriteLine("")
public class Program
{
// Please set the following connection strings in app.config for this WebJob to run:
// AzureWebJobsDashboard and AzureWebJobsStorage
static void Main()
{
JobHostConfiguration config = new JobHostConfiguration();
JobHost host = new JobHost(config);
host.Call(typeof (Program).GetMethod("DoJobNow"), new { value = "Hello world!" });
host.RunAndBlock();
}
[NoAutomaticTrigger]
public async static void DoJobNow(string value, TextWriter log)
{
await log.WriteLineAsync("Write with textwriter");
await log.WriteLineAsync("Write with textwriter again - still open");
await Task.Delay(100);
await log.WriteLineAsync("TextWriter is closed?? Exception here!");
}
}
Когда я запускаю этот код локально, я получаю System.ObjectDisposedException
на последнем журнале вызова, и если я комментирую на Task.Delay
линии, она работает отлично! Почему это?
возможно дубликат: http://stackoverflow.com/questions/31507384/azure-webjob-textwritter-logger-being-disposed-in-the-middle-of -my-метод –