我尝试使用Azure管理库NuGet包使用ComputeManagementClient.UpgradeByNameAsync升级部署。
我使用我的证书的指纹从证书存储区加载它并创建我的凭据,但我的请求一直被拒绝,并显示以下消息:
服务器无法验证请求。验证证书是否有效并与此订阅相关联。
我已经做了我能想到的一切,但没有任何工作。
我已经四次检查我的指纹是否正确,并且证书显示在azure的管理证书列表中。关于我可能出错的地方的任何想法?
答案 0 :(得分:1)
public static CertificateCloudCredentials FromPublishSettingsFile(string path, string subscriptionId)
{
try
{
var profile = XDocument.Load(path);
var certificate = new X509Certificate2(
Convert.FromBase64String(profile.Descendants("PublishProfile").First()
.Attribute("ManagementCertificate").Value));
return new CertificateCloudCredentials(subscriptionId, certificate);
}
catch (Exception ex)
{
throw ex;
}
}
使用此代码块从“发布设置”文件创建CertificateCloudCredentials类型的对象。成功创建对象后,使用以下代码块创建computeManagementClient。
var computeManagementClient = new ComputeManagementClient(creds);
虽然计算管理客户端仅接受SubscriptionCloudCredentials,但CertificateCloudCredentials是兼容的并且将被接受。
答案 1 :(得分:0)
不确定为什么它不适用于证书存储,但另一种方法是使用* .publishsettings文件附带的指纹进行订阅。您可以使用https://windows.azure.com/download/publishprofile.aspx
下载此文件答案 2 :(得分:0)
斯里兰卡的回答是相对正确的。我blogged关于将MAML与发布设置文件一起使用,其方式比上面提供的Sri更加冗长,如果您想使用自己的发布设置文件尝试解决方案,请使用一些示例代码。
您需要先将证书安装到本地计算机上才能使用它(根据我的经验)。您是否考虑过切换到使用TokenCloudCredential,这可以让您使用ADAL NuGet package将MAML粘贴到AAD?这可能有助于您缓解与证书相关的问题。