簡體   English   中英

System.ArgumentNullException:'值不能為null。'

[英]System.ArgumentNullException: 'Value cannot be null.'

我是C#的新手,在從事旋轉VM(並支持MS Azure中的資源)的項目時遇到了此錯誤。

我正在使用的代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Azure.Management.Compute.Fluent;
using Microsoft.Azure.Management.Compute.Fluent.Models;
using Microsoft.Azure.Management.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent;
using Microsoft.Azure.Management.ResourceManager.Fluent.Core;
namespace ConsoleApp1
{
    class Program
    {
        private static void Main(string[] args)
        {

            var credentials = SdkContext.AzureCredentialsFactory.FromFile(Environment.GetEnvironmentVariable("AZURE_AUTH_LOCATION"));
            var azure = Azure
                .Configure()
                .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
                .Authenticate(credentials)
                .WithDefaultSubscription();

另外,我還有一個“ azureauth.properties.txt”文件,用於設置上面代碼中引用的新環境路徑"AZURE_AUTH_LOCATION"

要設置路徑,我使用了簡單的PS命令:

[Environment]::SetEnvironmentVariable("AZURE_AUTH_LOCATION", "C:\MY-PATH\azureauth.properties", "User")

azureauth.properties文件包含以下格式的簡單租戶/應用程序/密鑰ID:

subscription=<subscription-id>
client=<application-id>
key=<authentication-key>
tenant=<tenant-id>
managementURI=https://management.core.windows.net/
baseURL=https://management.azure.com/
authURL=https://login.windows.net/
graphURL=https://graph.windows.net/

每當我嘗試運行該項目時,我都會收到一條錯誤消息:

System.ArgumentNullException:'值不能為null。'

專門針對以下行:

var credentials = SdkContext.AzureCredentialsFactory.FromFile(Environment.GetEnvironmentVariable("AZURE_AUTH_LOCATION"));

知道為什么嗎?

就像luxun所說的,您必須定義環境變量。 為此,打開cmd(在Windows上)並輸入:

設置AZURE_AUTH_LOCATION

這將顯示環境變量“ AZURE_AUTH_LOCATION”。 如果結果為“未定義環境變量AZURE_AUTH_LOCATION”,或者路徑錯誤,則在cmd上寫:

SET AZURE_AUTH_LOCATION = PathOfTheAzureAuthLocationFile

這應該可以解決問題。

Environment.GetEnvironmentVariable("AZURE_AUTH_LOCATION")必須返回null。

在這種情況下,您可能要檢查該環境變量是否已實際定義或文件是否存在。

定義一個變量,例如:

var location = Environment.GetEnvironmentVariable("AZURE_AUTH_LOCATION"); 

在VS中進行調試時,您應該能夠通過右鍵單擊位置並單擊quickwatch來檢查位置的值。

非常感謝您的建議。 最后,該錯誤是由男生在將Env變量設置為第一位時發生的錯誤而產生的(相對路徑包含我之前未發現的錯誤)。

我最終能夠運行它。

也進行了更改以在配置文件中定義路徑。

謝謝

暫無
暫無

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

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