此页面有用吗?
您对此内容的反馈非常重要。 请告诉我们您的想法。
更多反馈?
1500 个剩余字符
导出 (0) 打印
全部展开

创建云服务

更新时间: 2015年4月

Create Cloud Service异步操作在 Microsoft Azure 中创建新的云服务。有关云服务是什么以及如何使用它们的详细信息,请参阅什么是云服务?

必须先创建订阅并获取订阅标识符,然后才能运行此操作。有关创建 Azure 订阅的详细信息,请参阅欢迎使用 Microsoft Azure。可在管理门户的“设置”页上获取订阅标识符。请创建并上载管理证书以便为此操作授权。有关详细信息,请参阅创建并上载 Microsoft Azure 的管理证书

按如下所示指定 Create Cloud Service 请求。请将 <subscription-id> 替换为你的订阅 ID。

 

方法 请求 URI

POST

https://management.core.windows.net/<subscription-id>/services/hostedservices

你必须确保向管理服务发出的请求是安全的。有关其他详细信息,请参见对服务管理请求进行身份验证

无。

下表介绍请求标头。

 

请求标头 说明

Content-Type

必需。将此标头设置为 application/xml

x-ms-version

必需。指定用于此请求的操作的版本。必须将此标头的值设置为 28.10.10 或更高版本。有关版本控制标头的更多信息,请参阅服务管理版本控制

请求正文的格式如下所示:

<?xml version="1.0" encoding="utf-8"?>
<CreateHostedService xmlns="http://schemas.microsoft.com/windowsazure">
  <ServiceName>name-of-cloud-service</ServiceName>
  <Label>base64-encoded-label-of-cloud-service</Label>
  <Description>description-of-cloud-service</Description>
  <Location>location-of-cloud-service</Location>
  <AffinityGroup>name-of-affinity-group</AffinityGroup>
  <ExtendedProperties>
    <ExtendedProperty>
      <Name>name-of-property</Name>
      <Value>value-of-property</Value>
    </ExtendedProperty>
  </ExtendedProperties>
  <ReverseDnsFqdn>reverse-dns-fqdn</ReverseDnsFqdn>
</CreateHostedService>

下表说明了请求正文的元素。

 

元素名称

说明

ServiceName

必需。指定云服务的名称。此名称在 Azure 中必须是唯一的。此名称是用于访问该服务的 DNS 前缀名称。若要验证名称的可用性,可使用检查云服务名称可用性

Label

必需。指定云服务的 Base-64 编码的标识符。标识符的长度最多是 100 个字符。该标签可用于跟踪用途。

说明

可选。指定云服务的说明。说明的长度最多是 1024 个字符。

位置

如果未指定 AffinityGroup,则是必需的。指定创建云服务的位置。

必须指定 LocationAffinityGroup,但不能同时指定两者。若要查看可用的位置,可使用列出位置

AffinityGroup

如果未指定 Location,则是必需的。指定与订阅相关联的现有地缘组的名称。必须指定 LocationAffinityGroup,但不能同时指定两者。若要查看可用的地缘组,可使用列出地缘组

Name

可选。指定某个扩展的云服务属性的名称。名称最长可以是 64 个字符,只有字母数字字符和下划线在名称中有效,并且名称必须以字母开头。每个扩展属性都必须有定义的名称和值。最多可以定义 50 个扩展属性。

仅在 01.03.12 或更高版本中才可以使用 Name 元素。

可选。指定某个扩展的云服务属性的值。扩展属性值的长度最多是 255 个字符。

仅在 01.03.12 或更高版本中才可以使用 Value 元素。

ReverseDnsFqdn

可选。使用反向 DNS 查询进行查询时云服务的 IP 地址所解析成的 DNS 地址。

仅在 01.06.14 版或更高版本中才可以使用 ReverseDnsFqdn 元素。

响应包括 HTTP 状态代码和一组响应标头。

此操作成功后返回状态代码 201(已创建)。有关状态代码的信息,请参阅服务管理状态和错误代码

此操作的响应包括以下标头。该响应还可能包括其他标准 HTTP 标头。所有标准标头都符合 HTTP/1.1 协议规范

 

响应标头 说明

x-ms-request-id

一个值,它唯一地标识对管理服务做出的请求。对于异步操作,可使用此标头的值调用获取操作状态以确定操作是已完成、已失败还是仍在进行中。

无。

你还可以使用以下资源创建新的云服务:

Next step:

创建云服务后,下一步是创建部署。有关详细信息,请参见下列内容:

以下控制台应用程序示例演示如何创建新的云服务。请替换以下变量值:

  • Thumbprint – 替换为订阅中的管理证书的指纹

  • SubscriptionId – 替换为从管理门户获取的订阅标识符

  • ServiceName – 替换为要用于新的云服务的名称

  • Location – 替换为要定位云服务的地理位置



    note备注
    可使用列表位置获取合适的位置。


using System;
using System.Collections.Generic;
using System.Xml.Linq;
using System.Text;
using System.Security.Cryptography.X509Certificates;
using System.Net;
using System.IO;

namespace CreateCloudService
{
  class Program
  {
    private static XNamespace wa = "http://schemas.microsoft.com/windowsazure";
    private const string Thumbprint = "thumbprint-of-certificate";
    private const string SubscriptionId = "identifier-of-subscription";
    private const string ServiceName = "name-of-cloud-service";
    private const string Location = "location-of-cloud-service";
    private const string Version = "2013-08-01";

    // Gets or sets the certificate that matches the Thumbprint value.
    private static X509Certificate2 Certificate { get; set; }

    static void Main(string[] args)
    {
      Certificate = GetStoreCertificate(Thumbprint);

      // Create the URI for the request
      string uriFormat = "https://management.core.windows.net/{0}/services/hostedservices";
      Uri uri = new Uri(String.Format(uriFormat, SubscriptionId));

      // Base-64 encode the label of the cloud service
      byte[] bytes = System.Text.Encoding.UTF8.GetBytes(ServiceName);
      string base64Label = Convert.ToBase64String(bytes);

      // Create the request body
      XDocument requestBody = new XDocument(
        new XDeclaration("1.0", "UTF-8", "no"),
        new XElement(wa + "CreateHostedService",
          new XElement(wa + "ServiceName", ServiceName),
          new XElement(wa + "Label", base64Label),
          new XElement(wa + "Location", Location)));

      // Submit the request and get the response
      HttpWebResponse response = InvokeRequest(uri, "POST", requestBody);

      HttpStatusCode statusCode = response.StatusCode;
      Console.WriteLine("The status of the operation: {0}", statusCode.ToString());
      Console.Write("Press any key to continue:");
      Console.ReadKey();
    }

    // Set the request headers and submit the request
    private static HttpWebResponse InvokeRequest(
      Uri uri,
      string method,
      XDocument requestBody)
    {
      HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
      request.Method = method;
      request.Headers.Add("x-ms-version", Version);
      request.ClientCertificates.Add(Certificate);
      request.ContentType = "application/xml";
           
      HttpWebResponse response;

      try
      {
        byte[] byteArray = null;
        byteArray = Encoding.UTF8.GetBytes(requestBody.ToString());
        Stream stream = request.GetRequestStream();
        stream.Write(byteArray, 0, byteArray.Length);
        stream.Flush();
        stream.Close();

        response = (HttpWebResponse)request.GetResponse();
      }
      catch (WebException ex)
      {
        response = (HttpWebResponse)ex.Response;
      }
      response.Close();
      return response;
    }

    // Gets the certificate matching the thumbprint from the local store.
    // Throws an ArgumentException if a matching certificate is not found.
    private static X509Certificate2 GetStoreCertificate(string thumbprint)
    {
      List<StoreLocation> locations = new List<StoreLocation>
      { 
        StoreLocation.CurrentUser, 
        StoreLocation.LocalMachine
      };

      foreach (var location in locations)
      {
        X509Store store = new X509Store("My", location);
        try
        {
          store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
          X509Certificate2Collection certificates = store.Certificates.Find(
            X509FindType.FindByThumbprint, thumbprint, false);
          if (certificates.Count == 1)
          {
            return certificates[0];
          }
        }
        finally
        {
          store.Close();
        }
      }
      throw new ArgumentException(string.Format(
        "A Certificate with Thumbprint '{0}' could not be located.",
        thumbprint));
    }
  }
}

显示:
© 2015 Microsoft