动态 CRM "CrmServiceClient" 无法使用活动目录身份验证模式连接

7
我正在尝试从asp.net Web项目连接本地Dynamic CRM 2016。我使用带有Active Directory身份验证模式的CrmServiceClient方法。
我遇到了以下异常。
{"无法从程序集'Microsoft.IdentityModel.Clients.ActiveDirectory, Version=3.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'中加载类型'Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior'。":"Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior"}
new CrmServiceClient(
    new System.Net.NetworkCredential("adminuser", "pass", "domain"), 
    Microsoft.Xrm.Tooling.Connector.AuthenticationType.AD, 
    "http://sample.com", "4466", "DEV", useUniqueInstance:false, 
    useSsl:false)

我也尝试了这个方法

new CrmServiceClient(ConfigurationManager.ConnectionStrings["CRM_CONN"].ConnectionString)

请问您能展示一下您的代码吗? - Filburt
@Filburt 有什么建议吗? - Ahmed Abdullah Saeed
你确定 Microsoft.IdentityModel.Clients.ActiveDirectory.dll 已经放置在正确的位置了吗?看起来这个 DLL 文件可能已经丢失或者被安全策略阻止了,因为你是从网络位置复制过来的。 - Filburt
它在那里,Visual Studio 给了我这个 DLL 的异常。我已经使用 NuGet 添加了当前版本 3.10。之后它给了我这个异常。看起来这是 DLL 的内部问题。 - Ahmed Abdullah Saeed
1
我建议使用Nuget提供的“crmsdk”程序集 - 它们应该包含正确的版本。我在控制台应用程序中使用了它们,并使用了您在第二个示例中尝试的连接字符串。我的Microsoft.IdentityModel.Clients.ActiveDirectory.dll版本为2.18.20625.1556。 - Filburt
1个回答

9

编辑,我找到了解决办法。

我不得不降级:Microsoft.IdentityModel.Clients.ActiveDirectory到2.27版本才能使其工作。我测试过的新版本都有相同的错误。

希望这对你也有用!


是的,我也改变了版本2.18。我认为,微软对他们的版本真的很困惑。 - Ahmed Abdullah Saeed
在2.18上运行成功了吗?我可以在我的控制台应用程序中找到2.18,但在我的Web应用程序中,我无法降级到2.27以下。 - Trond Jelsnes Undrum
4
只有在针对 .NET Framework 4.5.2 版本时,才能使用 2.28 版本。 - hdoghmen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接