Azure active directory 从ADAL库加载类IWebUI失败

Azure active directory 从ADAL库加载类IWebUI失败,azure-active-directory,adal,Azure Active Directory,Adal,我们在运行时在C#应用程序中遇到此错误: {"Could not load type 'Microsoft.IdentityModel.Clients.ActiveDirectory.Internal.IWebUI' from assembly 'Microsoft.IdentityModel.Clients.ActiveDirectory, Version=3.13.1.846, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.":"Micr

我们在运行时在C#应用程序中遇到此错误:

{"Could not load type 'Microsoft.IdentityModel.Clients.ActiveDirectory.Internal.IWebUI' from assembly 'Microsoft.IdentityModel.Clients.ActiveDirectory, Version=3.13.1.846, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.":"Microsoft.IdentityModel.Clients.ActiveDirectory.Internal.IWebUI"} 

谢谢

您似乎错过了所需的装配程序。如果您是使用VisualStudio开发的,我建议您使用NuGet来管理库

例如,我创建了一个控制台应用程序,它使用ADAL从Azure AD获取令牌。然后,我们可以通过右键单击参考->管理NuGet软件包并搜索/安装ADAL来安装ADAL,如下图所示:

下面是我成功获取令牌的代码:

static void Main(string[] args)
{
    AccquireToken();
    Console.ReadLine();
}

static async void AccquireToken()
{
    string authority = "https://login.microsoftonline.com/common";
    string resource = "https://graph.microsoft.com";
    string clientId = "ce1c938c-001c-4caf-b078-9092103e1d49";
    Uri redirectUri = new Uri("http://localhost");
    AuthenticationContext authContext = new AuthenticationContext(authority);

    var result = await authContext.AcquireTokenAsync(resource, clientId, redirectUri, new PlatformParameters(PromptBehavior.Auto));
    Console.WriteLine(result.AccessToken);
}

在这种情况下,Microsoft.IdentityModel.Clients.ActiveDirectory.Internal.IWebUI的类型位于Microsoft.IdentityModel.Clients.ActiveDirectory.Platform程序集中,当我们使用NuGet安装ADAL库时,将自动安装/引用该程序集。

您似乎缺少ADAL所需的程序集。如果您是使用VisualStudio开发的,我建议您使用NuGet来管理库

例如,我创建了一个控制台应用程序,它使用ADAL从Azure AD获取令牌。然后,我们可以通过右键单击参考->管理NuGet软件包并搜索/安装ADAL来安装ADAL,如下图所示:

下面是我成功获取令牌的代码:

static void Main(string[] args)
{
    AccquireToken();
    Console.ReadLine();
}

static async void AccquireToken()
{
    string authority = "https://login.microsoftonline.com/common";
    string resource = "https://graph.microsoft.com";
    string clientId = "ce1c938c-001c-4caf-b078-9092103e1d49";
    Uri redirectUri = new Uri("http://localhost");
    AuthenticationContext authContext = new AuthenticationContext(authority);

    var result = await authContext.AcquireTokenAsync(resource, clientId, redirectUri, new PlatformParameters(PromptBehavior.Auto));
    Console.WriteLine(result.AccessToken);
}

在本例中,Microsoft.IdentityModel.Clients.ActiveDirectory.Internal.IWebUI的类型位于Microsoft.IdentityModel.Clients.ActiveDirectory.Platform程序集中,当我们使用NuGet安装ADAL库时,该程序集将自动安装/引用。

我必须删除此文件:


不知道它是从哪里来的。它没有被直接引用。一定是以前版本或参考资料的遗物。但是删除它有效。

我不得不删除这个文件:


不知道它是从哪里来的。它没有被直接引用。一定是以前版本或参考资料的遗物。但是删除它是有效的。

谢谢你的回复。是的。在得到错误之前,我们已经完成了所有这些步骤。由于库对我来说运行良好,您能否上传一个示例项目来帮助我们解决这个问题?您可以通过上传,上传前请删除敏感信息。谢谢回复。是的。在得到错误之前,我们已经完成了所有这些步骤。由于库对我来说运行良好,您能否上传一个示例项目来帮助我们解决这个问题?您可以通过上传,上传前请删除敏感信息。