authentication - 如何在 Dynamics Crm 项目中更改 WS-Trust 安全性
问题描述
我的情况突然我得到:值不能为空。参数名称:尝试获取组织服务时的服务,谷歌搜索后我发现我的项目使用 WS-Trust 安全性,它可能会造成我的问题,
在 ms docs 中阅读后,我发现这可能是我的情况:
如果您正在访问 CrmServiceClient.OrganizationServiceProxy 属性:
删除代码中对该属性的所有使用。CrmServiceClient 实现 IOrganizationService 并公开可以为组织服务代理设置的所有内容。
我的问题是如果我删除我的使用:
CrmServiceClient crmServiceClient = new CrmServiceClient( connectionString);
IOrganizationService organizationService = (IOrganizationService)crmServiceClient.OrganizationWebProxyClient != null
? (IOrganizationService)crmServiceClient.OrganizationWebProxyClient : (IOrganizationService)crmServiceClient.OrganizationServiceProxy;
可以替代什么?
有人处理这种情况吗?有没有其他方法可以解决它?
解决方案
您的直接问题可能是由于身份验证问题,例如密码过期。这将导致 Service 属性为空。您可以在使用返回的客户端之前查看 LastCrmError 属性以检测这种情况。我使用过这样的代码:
Microsoft.Xrm.Tooling.Connector.CrmServiceClient c = new Microsoft.Xrm.Tooling.Connector.CrmServiceClient(connStr);
// At least when using Office365 authentication, invalid (or expired password) will show up in LastCrmError.
// I have not seen LastCrmException, but it sounds bad, too, to check that too.
if (!(string.IsNullOrEmpty(c.LastCrmError) && c.LastCrmException == null))
{
Console.Error.WriteLine(Environment.NewLine + "CRM Error: " + c.LastCrmError);
if (c.LastCrmException != null)
{
Console.Error.WriteLine("CRM Exception: " + c.LastCrmException.Message);
Console.Error.WriteLine("CRM Exception details: " + c.LastCrmException.ToString());
}
Environment.Exit(99);
}
此代码可能会停止工作,因为删除了 WS-Trust 安全性并升级到较新的 9.2.x SDK,如使用 WS-Trust 安全协议使用 Office365 身份验证中所述
我正在考虑仅使用 IOrganizationService 接口(见下文)中的方法来验证代码的未来,但 CrmLastError 在 IOrganizationProxy 接口中不可用,所以现在我使用上面的代码。但是代码库的其余部分仅依赖于 IOrganizationService 接口,因此代码返工应该是最少的。
IOrganizationService c = new Microsoft.Xrm.Tooling.Connector.CrmServiceClient(connStr);
推荐阅读
- python - Python同时监听和分析数据
- python-3.x - Pandas 对条形图进行分组和重采样:
- javascript - 适用于 PDF-417 格式的 Javascript 条码/OCR 阅读器
- hex - 串行数据温度转换
- php - 如何在 PHP 中访问对象元素
- css - 如何在 React 中导入和使用 materialize(或任何其他 css 库)sass
- python - 我无法以整数形式获得 LpProblem 答案
- php - PHP 注意:未定义索引:ID
- python - Python:PostgreSQL 选择的行以类似结构的数据类处理它们
- puppeteer-sharp - Puppeteer LaunchAsync 抛出异常