我一直在探索Azure和Graph API。我已经创建了两个应用程序,一个是MVC应用程序,另一个是Azure函数应用程序。当我尝试graphClient.Users.Request().GetAsync()
时,我在MVC应用程序中获得数据,但我遇到了错误,如System.Text.Encoding.Web version=6.0.0.0 with Azure Function。然而,在函数应用程序中,如果我尝试像graphClient.Users[Id].Requests().GetAsync()
这样的特定用户,我会得到数据。下面是我初始化和请求的代码片段。
clientId = Environment.GetEnvironmentVariable("ClientId");
tenantId = Environment.GetEnvironmentVariable("TenantId");
clientSecret = Environment.GetEnvironmentVariable("ClientSecret");
_clientApplication = ConfidentialClientApplicationBuilder.Create(clientId)
.WithTenantId(tenantId)
.WithClientSecret(clientSecret)
.Build();
graphClient = new GraphServiceClient(new DelegateAuthenticationProvider(async (requestMessage) => {
var authResult = await _clientApplication
.AcquireTokenForClient(scopes)
.ExecuteAsync();
requestMessage.Headers.Authorization =
new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
})
var result = await graphClient.Users.Request().Top(100).GetAsync();
我的.NET版本是3.1,我使用的是最新的图形API,即4.5.0和Microsoft.NET.sdk版本。函数是3.1.1。我尝试使用过滤器,以避免任何内部可能导致我的问题,但这是没有用的。我尝试了我的测试用例在其他笔记本电脑与. net6,它是工作的预期。但是,我需要使用netcore3.1运行此问题。请帮助我解决此问题。
1条答案
按热度按时间ars1skjm1#
在您的代码片段中,我看到您使用了Graph SDK并生成了一个访问令牌。在我的拙见中,由于这是一个Azure功能,您应该添加
User.Read.All
应用程序API权限,然后使用客户端凭据流。您可以尝试下面的代码吗?我创建了一个功能与门户网站的经验和代码如下:
我在kudo中创建了一个文件
function.proj
来添加引用。这里的运行时必须是netstandard2.0
。