0

我在这里遵循了快速入门:https ://docs.microsoft.com/en-us/powerapps/developer/common-data-service/webapi/enhanced-quick-start

效果很好,所以我需要注册我的应用程序,所以我遵循了这个: https ://docs.microsoft.com/en-us/powerapps/developer/common-data-service/walkthrough-register-app-azure-活动目录

但是现在我的单元测试给了我错误:

Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException:AADSTS65001:用户或管理员未同意使用名为“[AppName]”的 ID 为“[GUID]”的应用程序。为此用户和资源发送交互式授权请求。

我觉得我理解错误,管理员需要同意。我的程序在 bakcgorund 中做了一些魔术,用户没有登录,它使用的是设置的用户名和密码,用户不应该同意任何人。有没有办法永久设置这个同意,或者每次都通过第一个教程中的 Helper 类强制它?我所有的 Google-fu 都是空的……谢谢。

4

1 回答 1

1

你可以使用这样的东西:

CrmserviceClient 来自 Microsoft.Xrm.Tooling.Connector nuget

 private CrmServiceClient GenerateService()     
    {            
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;            
        ServicePointManager.Expect100Continue = true;              
        ServicePointManager.CheckCertificateRevocationList = true;            
        ServicePointManager.DefaultConnectionLimit = 10; 
        var service = new CrmServiceClient(new Uri(organizationUrl), clientId, secret, false, string.Empty);
        if (service.IsReady == false)
        {
            throw new Exception("CrmOrgService isn't ready. " + service.LastCrmError);
        }
        return service;
    }

或者,如果你想使用连接字符串,你可以使用这个:

连接字符串:https ://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/xrm-tooling/use-connection-strings-xrm-tooling-connect

        var connectionString = 
            ConfigurationManager.ConnectionStrings["XY"].ConnectionString;

        var conn = new CrmServiceClient(connectionString);
        IOrganizationService orgService = conn.OrganizationServiceProxy;
于 2020-05-22T13:58:15.637 回答