使用C#创建Azure虚拟机时创建资源组抛出未知主机错误
服务主体使用差异说明
通过Azure门户创建虚拟机时,平台会直接使用你当前登录的用户身份完成权限校验,不需要额外创建身份实体。代码访问属于非交互式的自动化场景,无法触发交互式登录流程验证个人用户身份,因此需要使用预先创建的服务主体作为代码操作Azure资源的身份凭证,用于权限校验和操作审计。
"No such host is known"错误排查
该错误是域名解析失败导致的请求无法发出,常见触发原因如下:
- 网络连通性问题:运行代码的设备无法正常访问Azure服务端点,可能是本地防火墙、企业代理、VPN策略拦截了Azure API请求,可先测试是否能正常访问Azure门户验证基础网络连通性。
- 认证文件配置问题:首先确认
azureauth.properties文件路径正确,你当前使用的相对路径../../../azureauth.properties需要匹配程序运行时的工作目录,否则会导致认证信息读取失败,无法正确发起Azure服务请求。同时要确认文件内的租户ID、客户端ID、客户端密钥、订阅ID等配置项填写准确无误。 - 云环境不匹配:如果你使用的是中国区Azure、美国政府云等非全球公有云环境,需要在初始化Azure客户端时显式指定对应的云环境标识,默认的全球公有云配置无法解析其他云环境的服务域名。
- SDK版本过旧:如果使用的是已停止维护的旧版Azure .NET管理SDK,可能存在硬编码的过时服务端点,导致域名解析失败,建议升级到对应SDK的最新稳定版本。
你提供的实现代码如下:
//Create the management client. This will be used for all the operations we will perform in Azure. var credentials = SdkContext.AzureCredentialsFactory.FromFile("../../../azureauth.properties"); var azure = Azure.Configure().WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic).Authenticate(credentials).WithDefaultSubscription(); //Create a resource group var groupName = "az204-ResourceGroup"; var vmName = "az204VMTesting"; var location = Region.USEast; var vNetName = "az204VNET"; var vNetAddress = "172.16.0.0/16"; var subnetName = "az204Subnet"; var subnetAddress = "172.16.0.0/24"; var nicName = "az204NIC"; var adminUser = "azureadminuser"; var adminPassword = "Pa$$w0rd!2019"; Console.WriteLine($"Creating resource group {groupName} ... "); //Below fails with 'No such host is known' var resourceGroup = azure.ResourceGroups.Define(groupName).WithRegion(location).Create();
内容的提问来源于stack exchange,提问作者brad
相关产品推荐
相关产品推荐

