gpt4 book ai didi

c# - Azure - 无法以编程方式执行 VIP 交换

转载 作者:太空宇宙 更新时间:2023-11-03 11:28:54 25 4
gpt4 key购买 nike

我正在尝试在 azure 云中的托管服务上使用 C# 执行交换部署操作。我的代码没有返回错误,但是,交换从未执行。

我的代码基于 Microsoft 网站上的示例代码,该代码介绍了如何使用 GET 执行列表服务操作,但交换部署使用 POST。

我对此很陌生,所以我的做法可能完全错误。如有任何帮助,我们将不胜感激。

这是我到目前为止的代码:

public void swapDeployment()
{
string operationName = "hostedservices";

Uri swapURI = new Uri("https://management.core.windows.net/"
+ subscriptionId
+ "/services/"
+ operationName+"/"
+serviceName);

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(swapURI);

request.Headers.Add("x-ms-version", "2009-10-01");
request.Method = "POST";
request.ContentType = "application/xml";

String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?> <Swap xmlns=\"http://schemas.microsoft.com/windowsazure\"><Production>HealthMonitor - 21/10/2011 22:36:08</Production><SourceDeployment>SwapTestProject - 13/12/2011 22:23:20</SourceDeployment></Swap>";
byte[] bytes = Encoding.UTF8.GetBytes(xml);
request.ContentLength = bytes.Length;



X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);

try
{
certStore.Open(OpenFlags.ReadOnly);
}
catch (Exception e)
{
if (e is CryptographicException)
{
Console.WriteLine("Error: The store is unreadable.");
}
else if (e is SecurityException)
{
Console.WriteLine("Error: You don't have the required permission.");
}
else if (e is ArgumentException)
{
Console.WriteLine("Error: Invalid values in the store.");
}
else
{
throw;
}
}

X509Certificate2Collection certCollection = certStore.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false);
certStore.Close();

if (0 == certCollection.Count)
{
throw new Exception("Error: No certificate found containing thumbprint " + thumbprint);
}

X509Certificate2 certificate = certCollection[0];

request.ClientCertificates.Add(certificate);

using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(bytes, 0, bytes.Length);
}

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode != HttpStatusCode.OK)
{
string message = String.Format( "POST failed. Received HTTP {0}",response.StatusCode);
throw new ApplicationException(message);
}
}
}


// Error shown at: using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
// Saying: The remote server returned an error: (404) Not Found.

编辑:我认为我的主要问题是 string xml= 行。它要求提供生产名称和部署名称。我以为我只有一个!有人可以澄清我应该在这里放什么吗?

谢谢

最佳答案

您发送的正文看起来有误。 (它缺少 <Production><SourceDeployment> 元素。)此外,您还没有显示您正在使用的 URL。 404 可能是因为 URL 错误。 (对于错误的请求正文,我预计会收到类似 400 的结果。)

如果您可以共享其余代码,调试可能会更容易。

关于c# - Azure - 无法以编程方式执行 VIP 交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8460305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com