小编Tin*_*ang的帖子

更新 Microsoft Graph 后未找到 DelegateAuthenticationProvider

我有以下代码(从 Microsoft Learn 复制),在 Microsoft.Graph 4.54.0 上运行良好

var authProvider = new DelegateAuthenticationProvider(async (request) => {
                // Use Microsoft.Identity.Client to retrieve token
                var assertion = new UserAssertion(token.AccessToken);
                var result = await clientApplication.AcquireTokenOnBehalfOf(scopes, assertion).ExecuteAsync();

                request.Headers.Authorization =
                    new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", result.AccessToken);
            });
Run Code Online (Sandbox Code Playgroud)

然后,我使用 Microsoft.Graph 5.0.0 和 Microsoft.Graph.Core 3.0.0 创建了一个新项目,这给出了无法找到 DelegateAuthenticationProvider 的错误。

如何创建可与 GraphServiceClient 一起使用的 AuthenticationProvider?

c# oauth-2.0 azure-ad-msal asp.net-core-webapi microsoft-graph-api

16
推荐指数
3
解决办法
2万
查看次数

即使在完全重置 Windows 后,所有需要 net6.0 的 nuget 软件包也“与 net6.0 不兼容”

启动我的电脑后,我尝试继续使用我之前一直在从事的项目:ASP.NET MVC Core 6.0。

突然 Microsoft.EntityFrameworkCore 没有安装在解决方案中。尝试重新安装 Microsoft.EntityFrameworkCore nuget 包后,我收到以下错误:

Package restore failed. Rolling back package changes for 'BulkyBook' (my project)
NU1202: Package Microsoft.Extensions.Logging 6.0.0 is not compatible with net6.0 (.NETCoreApp,Version=v6.0). Package Microsoft.Extensions.Logging 6.0.0 does not support any target frameworks.

NU1202: Package Microsoft.Extensions.Options 6.0.0 is not compatible with net6.0 (.NETCoreApp,Version=v6.0). Package Microsoft.Extensions.Options 6.0.0 does not support any target frameworks.
Run Code Online (Sandbox Code Playgroud)

...对于所有依赖项并且

NU1202: Package Microsoft.EntityFrameworkCore 6.0.5 is not compatible with net6.0 (.NETCoreApp,Version=v6.0). Package Microsoft.EntityFrameworkCore 6.0.0 does not support any target frameworks.
Run Code Online (Sandbox Code Playgroud)

当尝试安装任何需要 …

compatibility nuget asp.net-core-mvc

11
推荐指数
0
解决办法
1万
查看次数

.NET 6.0 阻止 Swagger 在启动时自动打开

当我在 Visual Studio 中运行 .Net6.0 Web api 项目时,Swagger UI 会在新的 Chrome 浏览器中自动打开。我怎样才能阻止这种情况发生?

asp.net-core-webapi .net-6.0

11
推荐指数
1
解决办法
5980
查看次数

.Net 6 Swagger如何将枚举显示为字符串

招摇的例子

你好!我正在尝试添加枚举作为我的 swagger 端点的参数,但它们显示为整数。在旧的 .net 上有 swagger 选项option.DescribeAllEnumsAsStrings();,但我在 .net 6 上没有它。 程序代码示例

我尝试添加options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());但仍然没有将我的枚举显示为字符串。

.net c# swagger asp.net-core-6.0

7
推荐指数
1
解决办法
9754
查看次数

如何使用 Microsoft Graph 从任意一封电子邮件发送电子邮件

我正在使用 microsoft graph 发送电子邮件。我想从 Active Directory 中存在的任何电子邮件发送此电子邮件。我已经获得了 Mail.Send 的权限,并获得了 Azure 的管理员同意。因此,所有设置都在 Azure 级别上进行访问和权限设置。

现在该讲代码了。我已经搜索过,但无法弄清楚如何调用 Microsoft graph api 来发送电子邮件。下面是我在搜索时找到的代码。如何替换以下代码以将电子邮件从 Azure AD 中的任何人发送到 Azure AD 中的任何人。还有发送电子邮件“Send AS”的代码。

  await graphClient.Me.Messages
              .Request()
                .AddAsync(message);
Run Code Online (Sandbox Code Playgroud)

email asp.net-core microsoft-graph-sdks microsoft-graph-api

6
推荐指数
2
解决办法
6980
查看次数

GraphServiceClient 并获取附加数据

我使用 GraphServiceClient 从 Outlook 获取消息。

var messages = await _graphServiceClient.Me.MailFolders[folderId].Messages.Request()
    .Header("Prefer", "outlook.body-content-type=\"text\"")
    .Filter($"createdDateTime gt {greaterDate} and createdDateTime lt {lessDate}")
    .Top(int.MaxValue).GetAsync();
Run Code Online (Sandbox Code Playgroud)

请求最多获取 1000 个项目。

我想获取其他消息并遵循文档

我的代码:

var pageIterator = PageIterator<Message>
        .CreatePageIterator(
            _graphServiceClient,
            messages,
            // Callback executed for each item in
            // the collection
            (m) =>
            {
                return true;
            },
            // Used to configure subsequent page
            // requests
            (req) =>
            {
                // Re-add the header to subsequent requests
                req.Header("Prefer", "outlook.body-content-type=\"text\"");
                return req;
            });

await pageIterator.IterateAsync();
Run Code Online (Sandbox Code Playgroud)

但是当我调用我的代码时什么也没有发生。看起来像是pageIterator.IterateAsync();无限循环之后。

怎么了?

c# asp.net-core microsoft-graph-sdks microsoft-graph-mail microsoft-graph-api

6
推荐指数
1
解决办法
1496
查看次数

Azure Web App 中的 SignalR 连接限制

我在我的一个 ASP.NET Core MVC 应用程序 (.NET 6) 中使用 ASP.NET Core SignalR,该应用程序作为 Web 应用程序托管在 Azure 上。

我正在努力寻找有关在 SignalR 无法接受更多连接之前我的网络应用程序可以处理多少并发连接的信息。

我知道 Azure 提供付费 Azure SignalR 服务,该服务从 1000 个并发连接开始计费。这是否表明我的设置最多只能支持 1000 个连接?到目前为止,400个并发连接已经完美运行。

c# azure signalr asp.net-core azure-signalr

4
推荐指数
1
解决办法
2203
查看次数

GraphServiceClient PageItarator 失败并显示“可解析对象不包含集合属性”

我想在我的项目中使用 PageIterator,它工作得很好,直到我想从 AzureAD 中取出组成员。无论我做什么,PageIterator 都会失败并显示“The Parsable does not contains a collection property”。

List<User> users = new();
var result = await graphClient.Groups[groupId].Members.GetAsync((requestConfiguration) =>
    {
       requestConfiguration.QueryParameters.Top = 2;
       // I only do this to force pageing, will not be on final version
    });

var pageIterator = PageIterator<User, DirectoryObjectCollectionResponse>
    .CreatePageIterator(graphClient, result,
         (m) =>
         {
             users.Add(m);
             return true;
         });

await pageIterator.IterateAsync();
Run Code Online (Sandbox Code Playgroud)

我的代码强制执行 2 项。这只是因为我绝望地试图找出我的代码出了什么问题。

我对这里出了什么问题一无所知,任何帮助都会很棒。

c# asp.net-core microsoft-graph-sdks microsoft-graph-api graphserviceclient

3
推荐指数
1
解决办法
750
查看次数

建议使用 webapplicationbuilder.configuration 而不是 configureappconfiguration

我正在尝试使用 Visual Studio 2022(企业版)使用 .NET 7 asp.net core Web api 应用程序的托管标识从 appsettings.Development.json 文件中读取值

这是 Program.cs 的代码:

var builder = WebApplication.CreateBuilder(args);
var config = builder.Configuration;

// Add AzureKeyVault

    builder.Host.ConfigureAppConfiguration((context, appConfig) =>
    {
        var objBuiltConfig = appConfig.Build();
        var userAssignedClientId = objBuiltConfig[AppKeys.UserAssignedClientId];
        var objSecretClient = new SecretClient(new Uri(objBuiltConfig[AppKeys.KeyVaultURL]),
            new DefaultAzureCredential(new DefaultAzureCredentialOptions
            {
                ManagedIdentityClientId = userAssignedClientId
            }));
        config.AddAzureKeyVault(objSecretClient, new KeyVaultSecretManager());
    });
Run Code Online (Sandbox Code Playgroud)

在代码编辑器中我看到警告:

建议使用 webapplicationbuilder.configuration 而不是 configureappconfiguration

即使在调试时我也没有得到数据。

任何人都可以帮助我提供一些代码示例,该示例将作为我的实现的参考

====================更新======================

var userAssignedClientId = config[AppKeys.UserAssignedClientId]; 
var keyVaultURL = config[AppKeys.KeyVaultURL]; 

builder.Configuration.AddAzureKeyVault(new Uri(uriString: keyVaultURL), new 
     DefaultAzureCredential(new DefaultAzureCredentialOptions { …
Run Code Online (Sandbox Code Playgroud)

c# azure-keyvault asp.net-core visual-studio-2022 .net-7.0

2
推荐指数
1
解决办法
1207
查看次数

Microsoft Graph 通过电子邮件或邮件获取用户

我需要通过电子邮件 ID 通过 Microsoft graph 查询获取单个用户详细信息,任何人都可以帮助我,我在 MS 文档中找不到它。

var users = graphServiceClient.Users.Request().GetAsync().GetAwaiter().GetResult();
Run Code Online (Sandbox Code Playgroud)

这只会带来 100 个用户,我需要通过电子邮件获取用户,这样我才能获取特定用户

c# asp.net-core microsoft-graph-sdks microsoft-graph-api

1
推荐指数
1
解决办法
3769
查看次数

如何使用 Asp.Versioning.Mvc.ApiExplorer 配置 swagger 的版本控制

AddVersionedApiExplorer我在dotnet core 6版本中找不到这个方法来配置swagger Asp.Versioning.Mvc.ApiExplorer。使用此版本控制库配置 swagger 的新方法是什么?

.net-core asp.net-core-webapi

1
推荐指数
1
解决办法
2878
查看次数

从 C# 调用图形 API 时出现不可接受的错误

嘿伙计们,我正在尝试获取租户中所有房间的列表,但我收到一个错误,我看不到解决方案。我的图形服务客户端似乎是正确的,因为我可以毫无问题地获取所有用户的列表,但获取所有房间失败并出现未知错误。

我想要复制的内容:https://learn.microsoft.com/en-us/graph/api/place-list ?view=graph-rest-1.0&tabs=csharp#request

创建图形客户端并尝试从地方获取房间列表

public GraphServiceClient CreateGraphClient()
{
    var scopes = new[] { "https://graph.microsoft.com/.default" };
    var options = new TokenCredentialOptions
    {
        AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
    };

    // https://learn.microsoft.com/dotnet/api/azure.identity.clientsecretcredential
    var clientSecretCredential = new ClientSecretCredential(
        tenantId, clientId, clientSecret, options);

    return new GraphServiceClient(clientSecretCredential, scopes);
}

public async Task<List<string>> GetRoomsAsync()
{
    var rooms = await graphClient.Places.Request().GetAsync();

    var roomsList = new List<string>();

    foreach (var room in rooms)
    {
        Console.WriteLine(room.DisplayName);
        roomsList.Add(room.DisplayName);
    }
    return roomsList;
}
Run Code Online (Sandbox Code Playgroud)

当试图获取用户时,同样的事情也会发生。

    public async Task<List<string>> GetUsersAsync()
    {
        var users = await graphClient.Users.Request().GetAsync(); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core microsoft-graph-sdks microsoft-graph-api

-1
推荐指数
1
解决办法
619
查看次数