2016-11-23 41 views
6

是否可以在Azure函數中使用appsettings.json文件?Azure函數 - 使用appsettings.json

沒有爲這裏的環境變量文件..

https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-csharp#environment-variables

..however我們使用八達通部署和真的想有AppSettings的版本控制。

我們已經使用

{ 
    "frameworks": { 
    "net46": { 
     "dependencies": { 
     "Microsoft.Extensions.Configuration": "1.0.0", 
     "Microsoft.Extensions.Configuration.Json": "1.0.0" 
     } 
    } 
    } 
} 

但試圖不斷得到

2016-11-23T15:27:03.811(12,16):錯誤CS0012:類型 '對象' 是在裝配定義沒有被引用。您必須添加對組件的引用'System.Runtime版本= 4.0.0.0

即使能夠通過Octopus提供/更新環境變量也足以滿足我們的需求。

請指教。

回答

2

只有環境變量支持應用程序設置和連接字符串。不支持appsettings.json

但是,您可以使用Azure資源管理器(ARM)模板來配置Function App的設置。這是一個blog post,更詳細地描述這一點。

+0

太棒了!這將做得非常好 - 謝謝! – Nosmadas

+0

@mathewc - 在Azure函數的新預覽工具中,當我創建一個Functions項目時,它會自動創建一個appsettings.json文件。自你的答案出現以後有什麼變化? –

+2

該設置文件僅用於本地開發,由我們的CLI使用。有一篇博客文章[這裏](https://blogs.msdn.microsoft.com/appserviceteam/2016/12/01/running-azure-functions-locally-with-the-cli/)更詳細地描述。 – mathewc

0

對於依賴關係,您應該在函數中使用/創建project.json。在那裏你可以指定你的依賴關係。 請檢查: https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-csharp#package-management

例如:

{ 
 
    "frameworks": { 
 
    "net46":{ 
 
     "dependencies": { 
 
     "Microsoft.ProjectOxford.Face": "1.1.0" 
 
     } 
 
    } 
 
    } 
 
}

+0

問題是關於appsettings.json,而不是project.json文件,您需要指定nuget依賴關係 –

+0

您不指定appsettings.json中的依賴項,這就是您擁有project.json的原因。檢查: https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-csharp#package-management –

+1

我明白,但原來的問題是關於appsettings.json,而不是軟件包依賴關係--OP正嘗試將他的環境設置和連接存儲在文件中,而不是在Azure中的Web應用程序設置中。 –

7

適合您需要的答案是肯定的! Azure功能可以使用appsettings.json用於您的配置。但是當請求函數時,Azure會執行一些排序順序。

1°)天青將尋找KEYS您在.GetEnvironmentVariables(用 「[KEY]」)方法,通過對應用程序設置已配置的鍵中天青功能刮板設定

2º)如果Azure無法通過「應用程序設置」鍵找到這些配置,Azure將嘗試將appsettings.json文件查找到您正在使用的函數的根文件夾中。

3º)最後,如果Azure無法在Appsettings.json文件上的應用程序設置中找到此鍵,則Azure將執行最後一次嘗試找出web.config以查找此文件appsettings部分鍵。

對你的欣賞,你就能夠找到我的github回購這些配置由樣本:herehere

我希望這些信息幫助你。

+0

聽起來不錯,但是它只有單個鍵/值對嗎?我可以像從「ConfigurationBuilder」中獲得複雜對象嗎? – nhwilly

+0

是的,你可以!只要把你的配置像這樣: ** SectionA **:SubSectionA1:SubSectionA11:「你的價值在這裏」。在應用程序設置密鑰字段。這個「BIG」字符串是JSON約定。 使用appsettings.json只是創建自己的配置的一種方法,而不是最後一種。您可以在功能門戶上使用**應用程序設置**。 另一種可以嘗試的方式是Azure密鑰保管庫。 –

+0

我不確定這是如何工作的,但我會搗鼓它。謝謝... – nhwilly

7

根據對配置文件所做的更改,你應該只使用local.settings.json因爲appsettings.json更名爲local.settings.json

參考的變化: azure-functions-cli