Обновление: мой конечный результат заключается в том, что мне нужно использовать var result = awaitgraphClient .Users["{user-id}"].GetAsync((requestConfiguration) => { requestConfiguration.QueryParameters.Select = новая строка []{ "displayName","givenName","postalCode","identities" }; }) ; чтобы получить некоторые атрибуты, которые GraphClient.Me.GetAsync() не возвращает, и я считаю, что это поддерживается только Microsoft.Graph 5.61, но я могу ошибаться.
Когда я запускаю проект из Visual Studio, мне запрашивают учетные данные Entra, а затем появляется следующее сообщение об ошибке:
Произошло необработанное исключение при обработке запроса.
TypeLoadException: не удалось загрузить тип «Microsoft.Graph.IAuthenticationProviderOption» из сборки «Microsoft.Graph.Core, Version=3.1.22.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxx».
Вот моя настройка — я добавил эти пакеты:
Код: Выделить всё
Microsoft.Graph v.5.61
Microsoft.Identity.Web 3.2.2
Microsoft.Identity.Web.MicrosoftGraph v. 3.2.2
Код: Выделить всё
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "yourdomain.onmicrosoft.com",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"ClientSecret": "your-client-secret",
"CallbackPath": "/signin-oidc"
}
}
Код: Выделить всё
using Microsoft.Identity.Web;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
var builder = WebApplication.CreateBuilder(args);
// Add authentication and Microsoft Identity
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAd"));
// Add Graph API client
builder.Services.AddMicrosoftGraph(options =>
{
options.Scopes = "User.Read"; // Ensure this scope is granted in Azure portal
});
builder.Services.AddControllersWithViews();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
Код: Выделить всё
[Authorize]
public class HomeController : Controller
{
private readonly GraphServiceClient _graphClient;
public HomeController(GraphServiceClient graphClient)
{
_graphClient = graphClient;
}
public async Task Index()
{
// Get the user's information
var user = await _graphClient.Me.GetAsync();
// Access the user's email
var email = user.Mail ?? user.UserPrincipalName;
ViewBag.Email = email;
return View();
}
}
Код: Выделить всё
net8.0
enable
enable
Я пробовал разные версии пакетов, другой код в Program.cs.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -app-error