我正在运行以下代码来访问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
是正确的。根据{{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:
答案 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提供了有关身份验证的良好示例代码,包括在线。