MS CRM 2016 Microsoft.Xrm.Tooling.Connector OrganizationServiceProxy为null

时间:2017-02-07 15:05:36

标签: dynamics-crm dynamics-crm-2013

问题与Xrm.Tooling.Connector的MS CRM 2016有关。有bug。当您从连接方法获取对象时,OrganizationServiceProxy为null。

我们在2天内解决了这个问题,最后问题出现在system.serviceModel部分的app.config中。当我们修复所有错误时,一切都很好。我希望这个解决方案对其他人有所帮助。

1 个答案:

答案 0 :(得分:0)

我在连接对象中发现了最后一个CRM错误。您可以通过反思获得消息。

public void TestInit()
    {
        var str = "Url=https://*****; Domain=***; Username=***; Password=****; authtype=AD;";
        mysvc = new CrmServiceClient(str);

        var crmConSvc = GetInstanceField(mysvc.GetType(), mysvc, "CrmConnectionService");
        var logEntry = GetInstanceField(crmConSvc.GetType(), crmConSvc, "logEntry");
        var lastErrorMethod = GetInstanceMethod(logEntry.GetType(), logEntry, "get_LastError");

        var message = lastErrorMethod.Invoke(logEntry, null);
        Console.WriteLine(message);
    }

    internal static object GetInstanceField(Type type, object instance, string fieldName)
    {
        BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
            | BindingFlags.Static ;
        FieldInfo field = type.GetField(fieldName, bindFlags);

        return field?.GetValue(instance);
    }

    internal static MethodInfo GetInstanceMethod(Type type, object instance, string methodName)
    {
        BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
            | BindingFlags.Static;
        MethodInfo met = type.GetMethod(methodName, bindFlags);

        return met;
    }