Important
Azure Functions 執行環境 1.x 版本的支援於 2026 年 9 月 14 日結束。 將應用程式遷移到 4.x 版本以獲得完整支援。
host.json 中繼資料檔案所包括的設定選項,會影響函數應用程式執行個體的所有函式。 本文列出版本 1.x 執行階段可用的設定。 JSON 結構描述位於 http://json.schemastore.org/host。
備註
本文保留了Azure Functions執行時 1.x 的 host.json 參考資料。 其他歷史資訊請參見 執行時 1.x 的舊有參考資料。 關於目前 host.json 參考,請參見 host.json Azure Functions 2.x 及以後版本的參考資料。
其他函數應用程式設定選項的管理是在應用程式設定中進行。
有些 host.json 設定只有在本機執行時,才會在 local.settings.json 檔案中使用。
範例 host.json 檔案
下列範例 host.json 檔案已指定所有可能的選項。
{
"aggregator": {
"batchSize": 1000,
"flushTimeout": "00:00:30"
},
"applicationInsights": {
"sampling": {
"isEnabled": true,
"maxTelemetryItemsPerSecond" : 5
}
},
"documentDB": {
"connectionMode": "Gateway",
"protocol": "Https",
"leaseOptions": {
"leasePrefix": "prefix"
}
},
"eventHub": {
"maxBatchSize": 64,
"prefetchCount": 256,
"batchCheckpointFrequency": 1
},
"functions": [ "QueueProcessor", "GitHubWebHook" ],
"functionTimeout": "00:05:00",
"healthMonitor": {
"enabled": true,
"healthCheckInterval": "00:00:10",
"healthCheckWindow": "00:02:00",
"healthCheckThreshold": 6,
"counterThreshold": 0.80
},
"http": {
"routePrefix": "api",
"maxOutstandingRequests": 20,
"maxConcurrentRequests": 10,
"dynamicThrottlesEnabled": false
},
"id": "9f4ea53c5136457d883d685e57164f08",
"logger": {
"categoryFilter": {
"defaultLevel": "Information",
"categoryLevels": {
"Host": "Error",
"Function": "Error",
"Host.Aggregator": "Information"
}
}
},
"queues": {
"maxPollingInterval": 2000,
"visibilityTimeout" : "00:00:30",
"batchSize": 16,
"maxDequeueCount": 5,
"newBatchThreshold": 8
},
"sendGrid": {
"from": "Contoso Group <admin@contoso.com>"
},
"serviceBus": {
"maxConcurrentCalls": 16,
"prefetchCount": 100,
"autoRenewTimeout": "00:05:00",
"autoComplete": true
},
"singleton": {
"lockPeriod": "00:00:15",
"listenerLockPeriod": "00:01:00",
"listenerLockRecoveryPollingInterval": "00:01:00",
"lockAcquisitionTimeout": "00:01:00",
"lockAcquisitionPollingInterval": "00:00:03"
},
"tracing": {
"consoleLevel": "verbose",
"fileLoggingMode": "debugOnly"
},
"watchDirectories": [ "Shared" ],
}
本文的下列各節說明每個最上層屬性。 除非另有說明,否則全部都是選擇項目。
彙總工具
指定計算 Application Insights 的計量時彙總多少函式引動過程。
{
"aggregator": {
"batchSize": 1000,
"flushTimeout": "00:00:30"
}
}
| 屬性 | 預設 | 描述 |
|---|---|---|
batchSize |
1000 | 要彙總的要求數目上限。 |
flushTimeout |
00:00:30 | 要彙總的最長期間。 |
當達到兩個限制中的第一個時,功能呼叫會被彙總。
applicationInsights
控制 Application Insights 中的取樣功能。
{
"applicationInsights": {
"sampling": {
"isEnabled": true,
"maxTelemetryItemsPerSecond" : 5
}
}
}
| 屬性 | 預設 | 描述 |
|---|---|---|
isEnabled |
是 | 啟用或停用取樣。 |
maxTelemetryItemsPerSecond |
5 | 取樣的開始臨界值。 |
DocumentDB
{
"documentDB": {
"connectionMode": "Gateway",
"protocol": "Https",
"leaseOptions": {
"leasePrefix": "prefix1"
}
}
}
| 屬性 | 預設 | 描述 |
|---|---|---|
| GatewayMode | 閘道 | 該函式連接 Azure Cosmos DB 服務時所使用的連線模式。 選項為 Direct 和 Gateway |
| 通訊協定 | Https | 函式連接 Azure Cosmos DB 服務時所使用的連線協定。 請參閱此處以了解這兩種模式 |
| leasePrefix | n/a | 要在應用程式的所有函式上使用的租用前置詞。 |
durableTask
Durable Functions 的設定設定。
在執行Azure Functions 1.x 版本中,該durableTask區段位於 host.json 檔案的根節點。 可用的設定依據 Durable Functions 擴充功能的版本而定。 關於目前的設定參考,請參見Durable Functions host.json設定。
eventHub
事件中樞觸發程序和繫結 (部分內容可能是機器或 AI 翻譯) 的組態設定。
函式
工作主機所執行的函式清單。 空陣列表示已執行所有函式。 預定只能在本機執行時使用。 在 Azure 的功能應用程式中,你應該按照
{
"functions": [ "QueueProcessor", "GitHubWebHook" ]
}
functionTimeout
指出所有函式的逾時持續期間。 在無伺服器的使用情況方案中,有效範圍是從 1 秒到 10 分鐘,而預設值是 5 分鐘。 在 App Service 方案中沒有整體限制,而且預設值為 Null,這表示沒有逾時。
{
"functionTimeout": "00:05:00"
}
健康監視器
Host 健康監控器 的設定設定。
{
"healthMonitor": {
"enabled": true,
"healthCheckInterval": "00:00:10",
"healthCheckWindow": "00:02:00",
"healthCheckThreshold": 6,
"counterThreshold": 0.80
}
}
| 屬性 | 預設 | 描述 |
|---|---|---|
| 已啟用 | 是 | 指定是否已啟用此功能。 |
| 健康檢查間隔 | 10 秒 | 定期背景健康情況檢查之間的時間間隔。 |
| 健康檢查窗口 | 2 分鐘 | 與 healthCheckThreshold 設定搭配使用的滑動時間範圍。 |
| 健康檢查閾值 | 6 | 在主機回收起始之前,健康情況檢查可以失敗的最大次數。 |
| counterThreshold | 0.80 | 系統會將效能計數器視為狀況不良的閾值。 |
http
HTTP 觸發器與綁定的設定。
{
"http": {
"routePrefix": "api",
"maxOutstandingRequests": 200,
"maxConcurrentRequests": 100,
"dynamicThrottlesEnabled": true
}
}
| 屬性 | 預設 | 描述 |
|---|---|---|
| dynamicThrottlesEnabled | 假的 | 啟用時,此設定會促使要求處理管線定期檢查系統效能計數器,例如連線/執行緒/處理程序/記憶體/CPU/其他,而且如果這些計數器中任一個超過內建的閾值上限 (80%),則要求會遭到拒絕,並包含 429「忙碌」的回應,直到計數器回到正常水平。 |
| maxConcurrentRequests | 無限制 (-1) |
將會以平行方式執行 HTTP 函式的數目上限。 這可讓您控制並行作業,幫助您管理資源使用率。 例如,您可能會有使用大量系統資源 (記憶體/CPU/通訊端) 的 HTTP 函式,以致於並行率太高時造成問題。 或者,如果函式對第三方服務發出傳出要求,則需要限制這些呼叫的速率。 在這些情況下,套用節流會有所幫助。 |
| maxOutstandingRequests | 無限制 (-1) |
在任何指定時間保留的未完成要求數目上限。 此限制包括已排入佇列但尚未開始執行的要求,以及任何進行中的執行。 會以 429「太忙碌」回應來拒絕任何超過此限制的連入要求。 這樣可讓呼叫者採用以時間為基礎的重試策略,並且也協助您控制要求延遲的上限。 此動作只會控制在指令碼主機執行路徑內發生的佇列處理。 其他佇列如 ASP.NET 請求佇列仍會生效,且不受此設定影響。 |
| routePrefix | api | 適用於所有路徑的路由前綴。 若要移除預設前置詞,請使用空字串。 |
id
作業主機的唯一識別碼。 可以是已移除虛線的小寫 GUID。 在本機執行時為必要項目。 在 Azure 執行時,我們建議不要設定 ID 值。 當省略 id 時,Azure 會自動產生一個 ID。
如果您在多個函數應用程式中共用儲存體帳戶,請確定每個函數應用程式具有不同的 id。 您可以省略 id 屬性或將每個函數應用程式的 id 手動設定為不同的值。 計時器觸發程序會使用儲存體鎖定,以確保當函數應用程式相應放大至多個執行個體時,只會有一個計時器執行個體。 如果兩個函數應用程式共用相同的 id,且每個應用程式都使用計時器觸發器,則只有一個計時器會執行。
{
"id": "9f4ea53c5136457d883d685e57164f08"
}
記錄器
控制篩選由 ILogger 物件或 context.log 所寫入的記錄。
{
"logger": {
"categoryFilter": {
"defaultLevel": "Information",
"categoryLevels": {
"Host": "Error",
"Function": "Error",
"Host.Aggregator": "Information"
}
}
}
}
| 屬性 | 預設 | 描述 |
|---|---|---|
| 分類篩選器 | n/a | 指定依類別的篩選 |
| 預設等級 | 資訊 | 針對 categoryLevels 陣列中未指定的任何類別,會將這個層級和以上層級的記錄傳送至 Application Insights。 |
| categoryLevels | n/a | 一個類別陣列,指定針對每個類別傳送至 Application Insights 的最小記錄層級。 這裡指定的類別控制所有開頭為相同值的類別,但會優先使用較長的值。 在上述範例 host.json 檔案中,所有開頭為 "Host.Aggregator" 的類別都會記錄在 Information 層級。 所有以 "Host" 開頭的其他類別(例如 "Host.Executor"),都會在 Error 層級進行記錄。 |
queues
儲存體佇列觸發程序和繫結的組態設定。
{
"queues": {
"maxPollingInterval": 2000,
"visibilityTimeout" : "00:00:30",
"batchSize": 16,
"maxDequeueCount": 5,
"newBatchThreshold": 8
}
}
| 屬性 | 預設 | 描述 |
|---|---|---|
| 最大輪詢間隔 | 60000 | 佇列輪詢之間的間隔上限 (毫秒)。 |
| visibilityTimeout | 0 | 處理訊息失敗時,重試之間的時間間隔。 |
| 批次大小 | 16 | Functions 執行階段會同時擷取,並以平行方式處理的佇列訊息數目。 當要處理的數目減少到 newBatchThreshold 時,執行階段就會取得另一個批次,並開始處理那些訊息。 因此,每個函式並行處理之訊息的上限為 batchSize 加上 newBatchThreshold。 這項限制個別套用至每個佇列觸發的函式。 如果您需要避免平行執行在單一佇列上收到的訊息,可以將 batchSize 設定為 1。 不過,只要您的函式應用程式在單一虛擬機器 (VM) 上執行,這項設定就只會將並行排除。 如果函數應用程式擴增為多部 VM,則每部 VM 可以執行每個佇列觸發之函式的單一執行個體。最大值 batchSize 為 32。 |
| maxDequeueCount | 5 | 將訊息移至有害佇列之前,嘗試處理訊息的次數。 |
| newBatchThreshold | batchSize/2 | 每當要同時處理的訊息數目下降至這個數字時,執行階段就會擷取另一個批次。 |
SendGrid
SendGrid 輸出綁定的設定設定。
{
"sendGrid": {
"from": "Contoso Group <admin@contoso.com>"
}
}
| 屬性 | 預設 | 描述 |
|---|---|---|
| 從 | n/a | 所有函式的寄件者電子郵件地址。 |
serviceBus
服務匯流排觸發程序和繫結的組態設定。
{
"serviceBus": {
"maxConcurrentCalls": 16,
"prefetchCount": 100,
"autoRenewTimeout": "00:05:00",
"autoComplete": true
}
}
| 屬性 | 預設 | 描述 |
|---|---|---|
| 最大同時呼叫數 | 16 | 訊息幫浦應該起始之回呼的並行呼叫數上限。 Functions 執行階段預設會並行處理多個訊息。 若要指示執行階段一次只處理一個佇列或主題訊息,請將 maxConcurrentCalls 設定為 1。 |
| prefetchCount | n/a | 基礎 ServiceBusReceiver 將使用的預設 PrefetchCount。 |
| autoRenewTimeout | 00:05:00 | 將自動更新訊息鎖定的最大持續時間。 |
| autoComplete | 是 | 若為真,觸發程序會在作業成功執行時,自動完成訊息處理。 若為 false,則在傳回之前,函式必須負責完成訊息。 |
singleton
Singleton 鎖定行為的組態設定。 欲了解更多資訊,請參閱 GitHub 關於單例支援的議題。
{
"singleton": {
"lockPeriod": "00:00:15",
"listenerLockPeriod": "00:01:00",
"listenerLockRecoveryPollingInterval": "00:01:00",
"lockAcquisitionTimeout": "00:01:00",
"lockAcquisitionPollingInterval": "00:00:03"
}
}
| 屬性 | 預設 | 描述 |
|---|---|---|
| lockPeriod | 00:00:15 | 取得函式層級鎖定的期間。 鎖定會自動更新。 |
| listenerLockPeriod | 00:01:00 | 接聽程式鎖定所需的期間。 |
| listenerLockRecoveryPollingInterval | 00:01:00 | 啟動時無法取得接聽程式鎖定時,用於接聽程式鎖定復原的時間間隔。 |
| lockAcquisitionTimeout | 00:01:00 | 執行階段將嘗試取得鎖定的時間上限。 |
| lockAcquisitionPollingInterval | n/a | 鎖定取得嘗試之間的間隔。 |
追蹤
1.x 版
使用 TraceWriter 物件所建立記錄的組態設定。 若要深入了解,請參閱 [C# 日誌]。
{
"tracing": {
"consoleLevel": "verbose",
"fileLoggingMode": "debugOnly"
}
}
| 屬性 | 預設 | 描述 |
|---|---|---|
| consoleLevel | 資訊 | 主控台記錄的追蹤層級。 選項為:off、error、warning、info 和 verbose。 |
| fileLoggingMode | debugOnly | 檔案記錄的追蹤層級。 選項為 never、always、debugOnly。 |
watchDirectories
應該監視其變更的一組共用程式碼目錄 (部分內容可能是機器或 AI 翻譯)。 請確定,這些目錄中的程式碼變更時,函式會反映變更。
{
"watchDirectories": [ "Shared" ]
}