0

我正在运行以下代码来访问 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);
    ...
}

我相当确定organizationUrl并且credentials是正确的。根据这个演练,其他两个可以设置null为这个简单的案例。

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

System.ArgumentNullException 未处理

Message=Value 不能为空。

参数名称:CurrentServiceEndpoint

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

编辑:

System.ArgumentNullException 未处理

H结果=-2147467261

Message=Value 不能为空。

参数名称:CurrentServiceEndpoint

源=Microsoft.Xrm.Sdk

参数名称=当前服务端点

堆栈跟踪:

在 Microsoft.Xrm.Sdk.ClientExceptionHelper.ThrowIfNull(对象参数,字符串名称)

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

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

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

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

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

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

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

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

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

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

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

在 C:\Users\Viltersten\documents\Software\Projects\CRM_Server_Accessor\Program.cs: 60 中的 CRM_Server_Accessor.Program.Main(String[] args)

在 System.AppDomain._nExecuteAssembly(RuntimeAssembly 程序集,字符串 [] 参数)

在 System.AppDomain.ExecuteAssembly(字符串 assemblyFile,证据 assemblySecurity,String [] args)

在 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()

内部异常:

4

1 回答 1

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);
    //...
}

这篇 MSDN 文章提供了一个很好的关于身份验证的示例代码,包括在线。

于 2012-09-12T12:20:30.503 回答