0
我有一个Azure作业,它将记录异步保存到数据库。我发现它实际上并没有将任何内容保存到数据库中。我绝对使用异步/等待处处。我正在添加家长(市场)和儿童记录。我的数据库有参照约束,所以父母必须在孩子面前存在,但这应该没问题,因为我按照正确的顺序进行。我没有尝试抓住我的方法,并且azure日志中没有任何内容,因此看起来作业成功了。我已经从Winforms exe中调用了Method1,并且从中可以正常工作。什么可能是错误的?SaveChangesAsync无法在Azure webjob中工作
public static async Task MyJob([TimerTrigger("00:02:00", RunOnStartup = true)] TimerInfo timerInfo, TextWriter log)
{
await Jobs.Method1(Client, Logger);
}
public static async Task Method1(IClient client, ILogger logger)
{
await DataRepository.AddMarket(event.Id, event.MarketId);
await DataRepository.AddMarketChild(event.MarketId, 999);
}
public static async Task<Market> AddMarket(string eventId, string marketId)
{
using (var ctx = BTBEntities.CreateContext())
{
var market = new Market()
{
MarketId = marketId,
EventId = eventId,
};
ctx.Markets.Add(market);
await ctx.SaveChangesAsync();
return market;
}
}
public static async Task<HorseBet> AddHorseBet(string marketId, long selectionId)
{
using (var ctx = BTBEntities.CreateContext())
{
var bet = new MarketChild()
{
MarketId = marketId,
SelectionId = selectionId,
};
ctx.MarketChilds.Add(bet);
await ctx.SaveChangesAsync();
return bet;
}
}
如果没有错误处理和记录,你不能说有东西被吞噬。你期望看到错误的地方在哪里? –
@Panagiotis Kanavos通常未处理的运行时错误出现在它运行的实例的Web作业输出中,您可以在Azure门户中看到 –
您不应该认为环境会记录任何未处理的异常。您应该使用适当的异常处理和日志记录,并记录*整个*异常,而不仅仅是'ex.Message'。 'Exception.ToString()'也返回调用栈,它显示了错误发生的位置。很多时候,这不是你认为的地方 –