我需要创建插件,在客户关系管理在线检索记录。这个插件将注册在Dynamics 365的前提下.我已经尝试了我所知道的一切来创建这个插件,同时在网上搜索教程。但是每次我测试插件的时候。总是说
“https://office.api.crm5.dynamics.com/XRMServices/2011/Organization.svc". ”元数据包含无法解析的引用
在第一次收到这个错误后,我检查上面的链接是否是我的个人电脑内的搜索电缆。我确信这个链接是可搜索的。通过CRM 365插件在线连接CRM。我使用以下代码:
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。我对此有点吝啬。几乎5天的时间仍然没有得到解决办法。如果你有什么建议让我纠正这个错误。请告诉我:)
此外,我有另一个条件,同时测试这个插件。我在客户办公室。为了在前提下访问CRM 365,他们提供给我一个用户名和密码来连接Wi.同时连接这个无线网络。我能够访问CRM 365的前提.但我无法连接CRM在线(没有互联网接入)。同时,在我的插件代码,我必须连接到客户关系管理在线获得记录。因为当我成功地使用控制台应用程序连接时,我使用我的个人wifi与互联网连接。这就是问题的根源吗?
发布于 2017-02-16 14:16:16
如果我理解正确的话,你会说understand服务没有互联网接入.在这种情况下,它如何能够在线访问CRM?
此外,我建议使用简化的连接(https://msdn.microsoft.com/library/gg695810(v=crm.7).aspx来自Microsoft.Xrm.Client库,或者XRM (https://msdn.microsoft.com/en-us/library/mt608573.aspx),如果您正在使用CRM 2016 )。有许多不同的身份验证方案。连接到CRM联机是一条完整的认证、令牌和重定向链。这些工具可以处理所有这些,只需提供一个简单的连接字符串。
编辑:示例代码(使用CRM 2016 on-prem,在线与CRM对话)。
为了使用简化的连接Client.dll,您要么需要将它放入服务器端(我为快速测试所做的操作),要么将插件与库放在ILMerge中。已注册此示例插件在帐户上创建,但可以是任何东西。正确地从远程(客户关系管理在线)系统获得UserId。
public class TestOnlinePlugin : IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
CrmConnection conn = CrmConnection.Parse("Url=https://***.crm4.dynamics.com; Username=***; Password=***;");
IOrganizationService orgService = new OrganizationService(conn);
WhoAmIRequest req = new WhoAmIRequest();
WhoAmIResponse resp = (WhoAmIResponse) orgService.Execute(req);
throw new InvalidPluginExecutionException($"Remote user ID: {resp.UserId}");
}
}https://stackoverflow.com/questions/42267779
复制相似问题