Я получаю сообщение об ошибке при аутентификации для динамика 365 обычного пользователя с C # - PullRequest
0 голосов
/ 03 декабря 2018

Здравствуйте, эксперты, я застрял в «аутентификации на динамике 365 с обычным пользователем».Я пишу код на c # для аутентификации в динамике 365. Он работает правильно для пользователя, у которого есть администратор этой организации, но когда я создаю пользователя в этой организации и регистрируюсь с кодом c #, он дает мне «Ссылка на объект не установлена ​​наэкземпляр объекта.ошибка в 'IOrganization service'. Ниже приведен мой код на c # для аутентификации пользователя.

public AuthenticateUser authenticateUserByFetchXML(string URL, string username, string password)
    {
        try
        {
            // model class
            AuthenticateUser user = new AuthenticateUser();
            EntityReference resultRef = new EntityReference();

            IOrganizationService service;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            //put input into service
            CrmServiceClient GetCrmServiceClient = new CrmServiceClient(@"AuthType=Office365;Username='" + username + "'; Password='" + password + "';Url='" + URL + "'");

            //get organization web client by Iorganization service
            service = (IOrganizationService)GetCrmServiceClient.OrganizationWebProxyClient != null ? (IOrganizationService)GetCrmServiceClient.OrganizationWebProxyClient : (IOrganizationService)GetCrmServiceClient.OrganizationServiceProxy;

            //Get fetchXML for system user
              string fetchuser = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" +
                          "<entity name='systemuser'>" +
                            "<attribute name='fullname' />" +
                            "<attribute name='businessunitid' />" +
                            "<attribute name='title' />" +
                            "<attribute name='address1_telephone1' />" +
                            "<attribute name='positionid' />" +
                            "<attribute name='systemuserid' />" +
                            "<order attribute='fullname' descending='false' />" +
                          "</entity>" +
                        "</fetch>";
            EntityCollection users = new EntityCollection();
            users = service.RetrieveMultiple(new FetchExpression(fetchuser));

            if (users.Entities.Count > 0)
            {

                Guid gId = users.Entities[0].Id;
                 user.Id = gId;              
                return user;
            }
            return user;

        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

что я могу написать дополнительный код для аутентификации обычного пользователя с использованием этого кода.

1 Ответ

0 голосов
/ 10 декабря 2018

Когда вы создаете пользователя, у него нет ролей безопасности и он ничего не может сделать (включая вход в систему).Вы получаете сообщение об ошибке:

Убедитесь, что у нового пользователя есть хотя бы одна роль безопасности.

...