2017-08-24 17 views
0

私は比較的C#の方が新しいので、VMをスピンさせるプロジェクト(そしてMS Azureのリソースをサポートする)で作業している間、このエラーを見つけました。System.ArgumentNullException: '値はnullにはできません。'

私が使用していますコード以下のいずれかになります。また、私は私が"AZURE_AUTH_LOCATION"のように上記のコードで参照し、新たな環境のパスを設定するために使用される「azureauth.properties.txt」ファイルを持っている

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(); 

。私がしようとしているときはいつでも

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

azureauth.propertiesファイル形式で

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/ 

を簡単なテナント/アプリケーション/キーIDが含まれています。私は、単純なPSコマンド使用するパスを設定するには

プロジェクトを実行すると、エラーが表示されます。

System.ArgumentNullException: '値はnullにはできません。'特にラインの

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

任意のアイデアなぜですか?

+0

* Environment.GetEnvironmentVariable(「AZURE_AUTH_LOCATION」)からの結果を確認してください* - それがnullであると思われるので、あなたは環境変数を使用すると、スタックトレースを追加することができ、プロセス –

+0

に知られていない理由を調査する必要がありより良い援助? –

+1

Visual Studioを再起動してからもう一度試してみてください。 –

答えて

0

Environment.GetEnvironmentVariable("AZURE_AUTH_LOCATION")はnullを返す必要があります。

この場合、その環境変数が実際に定義されているかどうか、またはファイルが存在するかどうかを確認したい場合があります。あなたはVSでデバッグするときは、その上で右クリックし、[クイックウォッチ]をクリックすると、場所の値を検査することができるはず

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

のような変数を定義します。

1

luxunのように、環境変数を定義する必要があります。それは、(Windowsの場合)CMDを開き、書き込みの場合 :これは環境変数 "AZURE_AUTH_LOCATION" と表示されます

セットAZURE_AUTH_LOCATION。結果は、「環境変数AZURE_AUTH_LOCATIONが定義されていない」またはパスが間違っているならば、CMDに書き込みの場合:

SET AZURE_AUTH_LOCATION = PathOfTheAzureAuthLocationFile

これはトリックを行う必要があります。

+0

私はこれをしましたが、残念ながら同じ問題です。私はまだVSでエラーを受け取ります – Steba

+0

このような環境変数を設定すると、そのプロセスとそれが設定された後に作成されたすべての子プロセスに対してのみ有効です。あなたはそれを念頭に置いておくべきです –

+0

@Stebaあなたはまだエラーが発生しますか?スタックトレースを共有できますか? ありがとう –

0

多くのご意見ありがとうございます。 最後にエラーは、最初にEnv変数を設定する際の学校男の子の間違いによって生成されました(相対パスには以前には気づいていなかったエラーが含まれていました)。

私は最後にそれを実行することができました。

代わりに、設定ファイル内のパスも変更するように変更しました。

おかげ

関連する問題