如何获得成功Microsoft.Azure.Management.Fluent api方法的响应

时间:2018-06-27 06:35:18

标签: c# azure virtual-machine azure-sdk-.net azure-management-api

我已经通过c#中的Fluent API类在Azure门户上创建了虚拟机。 我的C#代码是:

public JsonResult createVM()
{
    try
    {
        IAzure azure = Authenticate(subscriptionId);
        azure.VirtualMachines.Define(vmName)
             .WithRegion(location)
             .WithExistingResourceGroup(ResourceGroupName)
             .WithExistingPrimaryNetworkInterface(networkInterface)
             .WithSpecializedOSDisk(managedDisk, operatingSystem)
             .WithSize(vmSize)
             .Create();

        //Here i want complete response from above code..if success.
        return Json(string.Empty);
    }
    catch (CloudException ex)
    {
        Response.Write(ex.Response.Content);
        return Json(string.Empty);
    }
}

如果执行失败,我会在catch块中获得响应。 但是如果执行成功,我们需要响应。

3 个答案:

答案 0 :(得分:0)

将Azure VM创建代码段分配给var。检查var是否不为null。如果是,则虚拟机创建成功。如果出现异常,您显然可以转到catch块。并且,如果需要,您可以像在此unit test中一样验证新创建的VM对象的任何属性。

答案 1 :(得分:0)

由于使用的是Azure管理库来创建Azure VM,因此SDK会自动将所有成功的响应都转换为IVirtualMachine,因此您只需访问IVirtualMachine实例即可检索所需的所有属性直接访问原始HTTP响应的百分比。

您可以按照here下的PrintVirtualMachine(IVirtualMachine virtualMachine)检索所需的属性,并构建一个包含VM属性的新匿名类,然后按如下所示将其返回给客户端:

return Json(new
{
    ComputerName = linuxVM.ComputerName,
    PowerState = linuxVM.PowerState,
    ProvisioningState = linuxVM.ProvisioningState
    .
    .
});

我不明白您为什么要原始的HTTP响应。但是,如果您仍然坚持只获取纯HTTP响应,则需要遵循Aravind提出的建议,以便您自己通过相关授权显式发送REST API Virtual Machines - Create Or Update。对于身份验证,您可以按照Authentication API to access subscriptions注册您的AAD应用,以访问https://management.azure.com/来创建Azure VM。此时,您需要自己做所有事情,并且可以控制此过程。

答案 2 :(得分:0)

我能够为Microsoft.Azure.Management.Fluent类跟踪Log。 跟随Follow this link- Log and Trace section

我在数据库中有日志响应:

 /// <summary>
    /// Here we can handle response.insert response in database
    /// </summary>
    /// <param name="invocationId">The invocation identifier.</param>
    /// <param name="response">The response message instance.</param>
    public void ReceiveResponse(string invocationId, HttpResponseMessage response)
    {
             logapResponse(response);

    }