1

を返しますがここでhereAzureの流暢API - AppServicePlanOperations.ListMetricsWithHttpMessagesAsyncは、このメソッドのドキュメントをInternalServerError

を見つけることができる私のコードです:

 var appServiceManager = AppServiceManager.Authenticate(credentials, subscriptionId); 
     var filter = "(name.value eq 'CpuPercentage') and startTime eq '2017-10-06T08:00:00Z' and endTime eq '2017-10-06T09:00:00Z' and timeGrain eq duration'PT1H'"; 
     var metrics = appServiceManager.AppServicePlans.Inner.ListMetricsWithHttpMessagesAsync("myResourceGroupName", "myAppServicePlanName", false, filter).Result;  

これは私が得る唯一の詳細な例外です:

1つ以上のエラーが発生しました。 (操作は無効なステータスコードを返し「InternalServerError」)---> Microsoft.Rest.Azure.CloudException:操作は無効なステータスコードを返し「InternalServerError」

ドキュメントはfilterが、それは(ありませんこれはオプションであることを述べています私がnullを渡すと私はBadRequestを取得します)。私は今、1つを提供しているし、今は内部サーバーのエラーをスローします。

azure-sdk-for-netレポで問題が発生しましたが、私がfilter文字列に間違いをしていると他の人に見てもらいたいと思っています。

答えて

1

上記のコードを使用すると、私の側でもこの問題を再現できます。私は別のMicrosoft.Azure.Management.Monitor.Fluent SDKがリソースのメトリックを一覧表示するために使用できることを発見しました。ベータバージョンです。私は私の側でデモを行う、それは私の側で正しく動作します。

using Microsoft.Azure.Management.Fluent.ServiceBus; 
using Microsoft.Azure.Management.Fluent.ServiceBus.Models; 
using Microsoft.Rest.Azure.Authentication; 
using Microsoft.Rest.Azure.OData; 

namespace MonitorDemo 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      var azureTenantId = "tenant Id"; 
      var azureSecretKey = "secret key"; 
      var azureAppId = "azure AD application Id"; 
      var subscriptionId = "subscription Id"; 
      var resourceGroup = "resource group name"; 
      var servicePlanName = "service plan name"; 
      var serviceCreds = ApplicationTokenProvider.LoginSilentAsync(azureTenantId, azureAppId, azureSecretKey).Result; 
      MonitorClient monitorClient = new MonitorClient(serviceCreds) { SubscriptionId = subscriptionId }; 
      var resourceUri = $"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Web/serverfarms/{servicePlanName}"; // resource id 
      var metricNames = "name.value eq 'CpuPercentage'"; // could be concatenated with " or name.value eq '<another name>'" ... inside parentheses for more than one name. 

      // The $filter can include time grain, which is optional when metricNames is present. The is forms a conjunction with the list of metric names described above. 
      string timeGrain = " and timeGrain eq duration'PT5M'"; 

      // The $filter can also include a time range for the query; also a conjunction with the list of metrics and/or the time grain. Defaulting to 3 hours before the time of execution for these datetimes 
      string startDate = " and startTime eq 2017-10-06T08:00:00Z"; 
      string endDate = " and endTime eq 2017-10-06T09:00:00Z"; 

      var odataFilterMetrics = new ODataQuery<MetricInner>(
       $"{metricNames}{timeGrain}{startDate}{endDate}"); 

      var metrics = monitorClient.Metrics.ListWithHttpMessagesAsync(resourceUri, odataFilterMetrics).Result; 
     } 
    } 
} 

enter image description here

packages.config返信に時間を割いて

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="Microsoft.Azure.Management.Monitor.Fluent" version="1.3.0-beta" targetFramework="net47" /> 
    <package id="Microsoft.Azure.Management.ResourceManager.Fluent" version="1.3.0" targetFramework="net47" /> 
    <package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="2.28.3" targetFramework="net47" /> 
    <package id="Microsoft.Rest.ClientRuntime" version="2.3.9" targetFramework="net47" /> 
    <package id="Microsoft.Rest.ClientRuntime.Azure" version="3.3.10" targetFramework="net47" /> 
    <package id="Microsoft.Rest.ClientRuntime.Azure.Authentication" version="2.3.1" targetFramework="net47" /> 
    <package id="Newtonsoft.Json" version="6.0.8" targetFramework="net47" /> 
</packages> 
+0

感謝トム。私はあなたの発見と一緒に遊ぶつもりです、そして、それが私のニーズを満たすなら、私はあなたの答えを受け入れます – AMoghrabi

関連する問題