首页 > 解决方案 > Microsoft AnalysisServices - 使用 Azure Functions 启动和停止服务器

问题描述

我想编写一个 Azure 函数来停止和恢复 MS 分析服务。我的任务是使用API ResumeAPI Suspend执行此操作。这是我第一次使用 C#(我有 Python/Javascript 背景)。我究竟做错了什么?有人可以提供正确的解决方案吗?我会从心底感激。

这是我当前的代码示例:

using System;
using System.Net;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;

static HttpClient client = new HttpClient();
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req)
{
    var subscriptionId = "mySId";
    var resourceGroupName = "myRGName";
    var serverName = "mySName";
    var APIurl = $"https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AnalysisServices/servers/{serverName}/resume?api-version=2017-08-01";

    var response = await client.PostAsync(APIurl, null);
    string result = await response.Content.ReadAsStringAsync();
    return req.CreateResponse(HttpStatusCode.OK);
}

这就是我在控制台中得到的。服务器并没有停止。 在此处输入图像描述

标签: c#azuresdkazure-functionsazure-analysis-services

解决方案


由于您在问题中提到的api“Resume”需要Azure Active Directory OAuth2 Flow,因此您需要先参考本教程获取访问令牌,然后使用访问令牌在您的功能代码中请求此api。

在你的函数应用的代码中,你需要将我们上面得到的访问令牌设置为授权的值,然后进行 post reuqest。

httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Your Oauth token");

推荐阅读