簡體   English   中英

web.config中的環境變量

[英]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未定義的錯誤。

所以我的問題具體是:

  1. 我哪里錯了? 我是否需要在其他地方定義它?
  2. 當我將其部署到臨時/生產時,在我的azure Web服務上,我將如何共享json文件以及web.config文件將如何更改?

我知道這個問題回答了如何在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.

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