簡體   English   中英

計時器觸發 Azure function 活動。當前為 null

[英]Timer triggered Azure function Activity.Current is null

設想

我按照本教程net core 3.1中創建了azure function v3來監控我的 web 應用程序。 你使用 Visual Studio 而不是在門戶中開發它。

問題

不幸的是,我收到了System.NullReferenceException: Object reference not set to an instance of an object.System.Diagnostics.Activity.Current.get returned null.在行:

availability.Context.Operation.ParentId = Activity.Current.SpanId.ToString();

如何解決?

嗯...我認為教程可能在代碼上有一些錯誤,我們可以注釋發生錯誤的兩行。

這個文檔說:

活動應通過調用構造函數創建,根據需要進行配置,然后使用 Start 方法啟動,該方法維護活動的父子關系並設置 Activity.Current。

這就是為什么availability.Context.Operation.ParentId = Activity.Current.SpanId.ToString(); 突發錯誤。 並關注這一行代碼,這一行有意義嗎? 所以在我的測試中,我對這一行和它后面的行進行了注釋,並且代碼執行得很好。

在此處輸入圖像描述 在此處輸入圖像描述

我按照相同的教程使用 Azure Function 設置了可用性測試。

首先,刪除這兩行將解決錯誤,function 將起作用

availability.Context.Operation.ParentId = Activity.Current.SpanId.ToString(); 
availability.Context.Operation.Id = Activity.Current.RootId;

但是這樣的話,with availability.Id = Activity.Current.SpanId.ToString(); 發送到 Application Insight 日志的 availability.Id 將始終為0000000000000 如果您不關心為每個可用性測試提供一個唯一的 ID,那很好。

如果需要,您可以在availability.Message中添加自定義 ID 或標識符,格式為 json。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM