[英]Environment Variables in web.config
使用.NET 4.5上的MVC框架在VS2017上使用webapp。 在我的本地開發環境中,我使用web.config文件,如下所示:
<appSettings>
<add key="GOOGLE_APPLICATION_CREDENTIALS"
value="C:\\Work\\Services-abcd.json" />
</appSettings>
但是當我運行webapp時,我仍然會收到GOOGLE_APPLICATION_CREDENTIALS未定義的錯誤。
所以我的問題具體是:
我知道這個問題回答了如何在web.config中獲取變量,但不知怎的,我無法在那里設置它。
編輯1:因為我被問到,這里是我得到錯過環境變量的錯誤 -
using Google.Cloud.Translation.V2;
TranslationClient client = TranslationClient.Create();
我無法聲明TranslationClient。
我哪里錯了? 我是否需要在其他地方定義它?
根據您的代碼和描述,我發現您已經定義了應用程序設置而不是環境變量。 注意:應用設置與環境變量不同。
如果您想在azure Web應用程序中設置環境變量,我建議您可以在Web應用程序代碼中設置它並將應用程序上傳到應用程序服務,如下所示:
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", Server.MapPath("test/test.txt"));
當我將其部署到臨時/生產時,在我的azure Web服務上,我將如何共享json文件以及web.config文件將如何更改?
我建議您可以創建一個文件夾來存儲您的Web應用程序中的json文件,然后您可以使用Server.MapPath來獲取您的json文件的正確路徑。
由於我沒有谷歌雲應用程序憑據json文件,所以我在我的測試演示中添加了一個txt文件來測試代碼可以正常工作。
有關我的測試演示的更多詳細信息,您可以參考以下代碼。
protected void Page_Load(object sender, EventArgs e)
{
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", Server.MapPath("test/test.txt"));
}
protected void Button1_Click(object sender, EventArgs e)
{
string path = Environment.GetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS");
Response.Write(path + "\n");
string[] lines = System.IO.File.ReadAllLines(path);
foreach (string line in lines)
{
Response.Write(line);
}
}
結果(111是txt文件內容):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.