我对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文件包含格式为
的简单租户/应用程序/密钥IDsubscription=<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:&#39;值不能为空。&#39;
专门针对该行:
var credentials = SdkContext.AzureCredentialsFactory.FromFile(Environment.GetEnvironmentVariable("AZURE_AUTH_LOCATION"));
知道为什么吗?
答案 0 :(得分:1)
就像luxun所说,你必须定义环境变量。 为此打开cmd(在Windows上)并写下:
设置AZURE_AUTH_LOCATION
这将显示环境变量&#34; AZURE_AUTH_LOCATION&#34;。如果结果为&#34;环境变量AZURE_AUTH_LOCATION未定义&#34;或者如果路径错误,那么写在cmd:
SET AZURE_AUTH_LOCATION = PathOfTheAzureAuthLocationFile
这应该可以解决问题。
答案 1 :(得分:0)
$source = '\\server\share'
$cred = Get-Credential
$pss = New-PSSession -ComputerName "$computername" -Credential $cred
Invoke-Command -Session $pss -ScriptBlock {
Copy-Item "$source\FOLDER" -Destination 'C:\FOLDER' -Recurse -Force -
Credential
$cred
必须返回null。
如果是这种情况,您可能需要检查是否已实际定义了该环境变量或该文件是否存在。
定义一个变量,如:
Environment.GetEnvironmentVariable("AZURE_AUTH_LOCATION")
在VS中进行调试时,您应该可以通过右键单击并点击快速监视来检查位置值。
答案 2 :(得分:0)
非常感谢您的建议。 最后,错误是由于学校男孩在设置Env变量时的错误(相对路径包含我之前没有发现过的错误)。
我最终能够运行它。
进行了更改以在配置文件中定义路径。
感谢