使用fetch XML从CRM Dynamics获取所有公司

时间:2012-09-12 09:21:31

标签: c# dynamics-crm xrm

我正在运行以下代码来访问CRM Dynamics DB。

using (OrganizationServiceProxy proxy 
  = new OrganizationServiceProxy(organizationUri, null, credentials, null))
{
  const String request = @"
    <fetch mapping ='logical'>
      <entity name = 'account'>
        <attribute name = 'name'/>
      </entity>
    </fetch>";

    FetchExpression expression = new FetchExpression(request);
    EntityCollection result = proxy.RetrieveMultiple(expression);
    ...
}

我很确定organizationUrlcredentials是正确的。根据{{​​3}},对于这个简单的案例,其他两个可以设置为null

问题是,当我到达最后一行,检索到result时,我得到Exception告诉我:

  

System.ArgumentNullException未处理

     

消息=值不能为空。

     

参数名称:CurrentServiceEndpoint

我忘了什么,如何解决这个问题?

编辑:

  

System.ArgumentNullException未处理

     

的HResult = -2147467261

     

消息=值不能为空。

     

参数名称:CurrentServiceEndpoint

     

源= Microsoft.Xrm.Sdk

     

PARAMNAME = CurrentServiceEndpoint

     

堆栈跟踪:

     

at Microsoft.Xrm.Sdk.ClientExceptionHelper.ThrowIfNull(Object   参数,字符串名称)

     

在   Microsoft.Xrm.Sdk.Client.ServiceConfiguration`1.CreateChannelFactory(ClientCredentials   clientCredentials)

     

在   Microsoft.Xrm.Sdk.Client.OrganizationServiceConfiguration.CreateChannelFactory(ClientCredentials   clientCredentials)

     

at Microsoft.Xrm.Sdk.Client.ServiceProxy`1.get_ChannelFactory()

     

at Microsoft.Xrm.Sdk.Client.ServiceProxy`1.CreateNewServiceChannel()

     

at Microsoft.Xrm.Sdk.Client.ServiceProxy`1.ValidateAuthentication()

     

at Microsoft.Xrm.Sdk.Client.ServiceProxy`1.get_ServiceChannel()

     

在   Microsoft.Xrm.Sdk.Client.ServiceContextInitializer 1.Initialize(ServiceProxy 1   代理)

     

在   Microsoft.Xrm.Sdk.Client.ServiceContextInitializer 1..ctor(ServiceProxy 1   代理)

     

在   Microsoft.Xrm.Sdk.Client.OrganizationServiceContextInitializer..ctor(OrganizationServiceProxy   代理)

     

在   Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy.RetrieveMultipleCore(QueryBase   查询)

     

在   Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy.RetrieveMultiple(QueryBase   查询)

     

在CRM_Server_Accessor.Program.Main(String [] args)中   C:\ Users \用户Viltersten \文件\ SOFTWARE \项目\ CRM_Server_Accessor \的Program.cs:行   60

     

在System.AppDomain._nExecuteAssembly(RuntimeAssembly程序集,   String [] args)

     

at System.AppDomain.ExecuteAssembly(String assemblyFile,Evidence   assemblySecurity,String [] args)

     

at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()

     

在System.Threading.ThreadHelper.ThreadStart_Context(对象状态)

     

在System.Threading.ExecutionContext.RunInternal(ExecutionContext   executionContext,ContextCallback回调,对象状态,布尔值   preserveSyncCtx)

     

在System.Threading.ExecutionContext.Run(ExecutionContext   executionContext,ContextCallback回调,对象状态,布尔值   preserveSyncCtx)

     

在System.Threading.ExecutionContext.Run(ExecutionContext   executionContext,ContextCallback回调,对象状态)

     

在System.Threading.ThreadHelper.ThreadStart()

     

的InnerException:

1 个答案:

答案 0 :(得分:1)

在项目中添加Service Reference,指向您单位的组织服务。

网址如下:http://yourCRMserver/yourOrganization/XRMServices/2011/Organization.svc

将其命名为OrganizationService

然后,在你的代码中你会这样继续:

using (OrganizationService.OrganizationServiceClient client = new OrganizationService.OrganizationServiceClient())
{
    const String request = "<Your FetchXml query goes here>";
    FetchExpression expression = new FetchExpression(request);
    EntityCollection result = client.RetrieveMultiple(expression);
    //...
}

This MSDN article提供了有关身份验证的良好示例代码,包括在线。