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()'也返回調用棧,它顯示了錯誤發生的位置。很多時候,這不是你認爲的地方 –