我正在try 从此API端点检索信息:

https://learn.microsoft.com/en-us/graph/api/subscribedsku-get?view=graph-rest-1.0&tabs=csharp

但是我在执行过程中遇到了一个问题,它给了我这个错误:

ODataError:对象标识符无效.它必须是[Guid]_[Guid]形式的字符串.

但我给他寄了一个字符串

下面是我的代码:

public async Task<SubscribedSku> GetAvailableLicenceDetails(string idSku)
{
            try
            {
                string accessToken = await tokenAcquisition.GetAccessTokenForUserAsync(new string[] { "Organization.Read.All" });
                var authenticationProvider = new BaseBearerTokenAuthenticationProvider(new TokenProvider(accessToken));

                var graphServiceClient = new GraphServiceClient(authenticationProvider);

                var SubscribedSku = await graphServiceClient.SubscribedSkus[idSku].GetAsync();

                return SubscribedSku;
            }
            catch (ODataError odataError)
            {
                Console.WriteLine(odataError.Error.Code);
                Console.WriteLine(odataError.Error.Message);
                throw;
            }
}

var sku = await GetAvailableLicenceDetails("6fd2c87f-b296-42f0-b197-1e91e994b900");

我试着找出问题所在,但我找不到,我需要帮助!

谢谢

推荐答案

您正在try 按skuId(服务SKU的ID)检索已订阅的SKU

查看doc个房产

Property Description
id The unique identifier for the subscribed sku object
skuId The unique identifier (GUID) for the service SKU

呼叫await graphServiceClient.SubscribedSkus["id"].GetAsync();需要id,而不是skuId.

subscribedSkus的限制是它们不支持按skuId过滤,所以你不能使用

var result = await graphClient.SubscribedSkus.GetAsync((requestConfiguration) =>
{
    requestConfiguration.QueryParameters.Filter = $"skuId eq {idSku}";
});

唯一的方法是检索所有subscribedskus并在客户端上执行过滤器

var response = await graphServiceClient.SubscribedSkus.GetAsync();
var subscribedSku = response.Value.FirstOrDefault(x=>x.SkuId eq idSku);

或者您的id不是skuId,您可以检索特定订阅的sku

var SubscribedSku = await graphServiceClient.SubscribedSkus[id].GetAsync();

Csharp相关问答推荐

ß != ss与ICU进行不区分大小写的比较

需要更改哪些内容才能修复被覆盖的财产中的无效警告CS 8765?

使用GeneratedComInterfaceProperty的.NET 8 COM类对于VB 6/SYS或ALEViewer不可见

如何使用CsvReader获取给定列索引的列标题?

实现List T,为什么LINQ之后它不会返回MyList?<>(无法强制转换WhereListIterator `1类型的对象)'

C#DateTime.ToString在ubuntu和centos中返回不同的结果

在C#中使用类中的对象值

在实时数据库中匹配两个玩家的问题

如何在C#中使用正则表达式抓取用逗号分隔的两个单词?

C#方法从AJAX调用接收NULL

Quartz调度程序不调用作业(job)类

Cosmos SDK和Newtonsoft对静态只读记录的可能Mutations

C#普罗米修斯指标

如何将MemberInitExpression添加到绑定中其他Lambda MemberInitExpression

对于PowerShell中的ConvertTo-SecureString方法,Microsoft如何将初始化向量添加到AES加密中的安全字符串?

如何在.NET MAUI中最大化GraphicsView的大小?

当我手动停止和关闭系统并打开时,Windows服务未启动

Linq SELECT的多条指令

将两个for循环更改为一条LINQ语句

如何保存具有多个重叠图片框的图片框?