我需要创建在 CRM Online 中检索记录的插件。此插件将在 Dynamics CRM 365 On-Premise 上注册。我已经尽我所能来创建这个插件,也在互联网上搜索教程。但是,每次我测试插件时。它总是说
“元数据包含无法解析的参考https://office.api.crm5.dynamics.com/XRMServices/2011/Organization.svc ”。
第一次收到此错误后,我检查上面的链接是否可以在我的电脑中搜索。而且我确定该链接是可搜索的。通过 CRM 365 插件连接 CRM Online。我使用这段代码:
private static void ConnectToMSCRM()
{
try
{
ClientCredentials credentials = new ClientCredentials();
credentials.UserName.UserName = "admin@office.onmicrosoft.com";
credentials.UserName.Password = "crmpass";
ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
Uri serviceUri = new Uri("https://office.api.crm5.dynamics.com/XRMServices/2011/Organization.svc");
OrganizationServiceProxy proxy = new OrganizationServiceProxy(serviceUri, null, credentials, null);
proxy.EnableProxyTypes();
另一方面,我写这篇文章是为了检查我是否可以在线连接到 CRM:
IPluginExecutionContext context = (IPluginExecutionContext)serprov.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory serfac = (IOrganizationServiceFactory)serprov.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serfac.CreateOrganizationService(context.UserId);
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
Entity ent = (Entity)context.InputParameters["Target"];
// presaledid = ent.GetAttributeValue<String>("new_presalesid");
try
{
ConnectToMSCRM();
}
catch (Exception ex)
{
throw new InvalidPluginExecutionException(ex.Message);
}
Guid userid = ((WhoAmIResponse)_service.Execute(new WhoAmIRequest())).UserId;
if (userid != Guid.Empty)
return;
那些代码返回错误信息。元数据包含无法解析的引用。奇怪的是,当我在控制台应用程序中使用相同的代码时,我能够连接到 CRM Online。我对此有点沮丧。快 5 天仍然没有得到解决方案。如果您对我有修复错误的建议。请告诉我 :)
在测试这个插件时我还有另一个条件。我在客户办公室。要访问 CRM 365 On-Premise,他们为我提供了连接 Wi-fi 的用户名和密码。连接此 Wi-Fi 时。我能够访问 CRM 365 On-premise。但我无法连接 CRM Online(无法访问互联网)。同时,在我的插件代码中,我必须连接到 CRM Online 以获取记录。因为当我使用控制台应用程序成功连接时,我使用我的个人 wifi 和互联网连接。这是这个问题的根源吗?