在 asp.net 核心 3.0 中使用 CRM 2011 REST 数据
Consume CRM 2011 REST data in asp.net core 3.0
我需要在 Blazor 应用程序(.net Core 3.0 中的新功能)中使用 CRM 2011 数据。
.net Core 不再支持 SOAP。因此,寻找有关如何使用 REST 端点的示例。
Microsoft SDK 程序集都使用 WCF for SOAP Endpoint,这在 .net core 中不受支持。因此我不得不使用 REST 端点。我只需要基本的 CRUD 操作。
我尝试使用 Unchase OData Connectedservice (https://github.com/unchase/Unchase.OData.Connectedservice/),它确实生成了一些代码。然而,所有示例仅显示如何添加服务,但无法找到有关如何使用它的任何文档?
它也无法编译并出现错误:
<'Task' 不包含 'Factory'>
的定义
感谢任何帮助或建议。
谢谢
我已经设法使用 Unchase OData Connectedservice 使其工作
我不得不将违规的 'Task' 重命名为 'System.Threading.Tasks.Task'
与异步斗争,但进展如下:
public static async Task<IEnumerable<Account>> ExecuteCustomersQueryAsync()
{
OrgContext crm = new OrgContext(new Uri("http://<Server>/<Org>/XRMServices/2011/OrganizationData.svc/"));
crm.Credentials = new NetworkCredential("Username", "Password", "Domain");
DataServiceQuery<Account> query = crm.AccountSet
.AddQueryOption("$filter", "new_Class/Value eq 100000000");
try
{
(ODataStandartResponse, IEnumerable<Account>) rez = await query.ExecuteAsync();
return rez.Item2;
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException(
"An error occurred during query execution.", ex);
}
}
然后调用:
IEnumerable<Account> container = await ExecuteCustomersQueryAsync();
try
{
foreach (Account cust in container)
{
Console.WriteLine("Customer Name: {0}, Acc No.: {1}", cust.Name, cust.AccountNumber);
}
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException("An error occurred during query execution.", ex);
}
这是在针对 netcoreapp3.0 的控制台应用程序上测试的,因此应该可以在 Blazor 应用程序上运行。有什么问题会在这里回复。
希望它能帮助任何其他想要做相同或类似事情的人。
我需要在 Blazor 应用程序(.net Core 3.0 中的新功能)中使用 CRM 2011 数据。 .net Core 不再支持 SOAP。因此,寻找有关如何使用 REST 端点的示例。
Microsoft SDK 程序集都使用 WCF for SOAP Endpoint,这在 .net core 中不受支持。因此我不得不使用 REST 端点。我只需要基本的 CRUD 操作。
我尝试使用 Unchase OData Connectedservice (https://github.com/unchase/Unchase.OData.Connectedservice/),它确实生成了一些代码。然而,所有示例仅显示如何添加服务,但无法找到有关如何使用它的任何文档? 它也无法编译并出现错误:
<'Task' 不包含 'Factory'>
的定义感谢任何帮助或建议。 谢谢
我已经设法使用 Unchase OData Connectedservice 使其工作
我不得不将违规的 'Task' 重命名为 'System.Threading.Tasks.Task'
与异步斗争,但进展如下:
public static async Task<IEnumerable<Account>> ExecuteCustomersQueryAsync()
{
OrgContext crm = new OrgContext(new Uri("http://<Server>/<Org>/XRMServices/2011/OrganizationData.svc/"));
crm.Credentials = new NetworkCredential("Username", "Password", "Domain");
DataServiceQuery<Account> query = crm.AccountSet
.AddQueryOption("$filter", "new_Class/Value eq 100000000");
try
{
(ODataStandartResponse, IEnumerable<Account>) rez = await query.ExecuteAsync();
return rez.Item2;
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException(
"An error occurred during query execution.", ex);
}
}
然后调用:
IEnumerable<Account> container = await ExecuteCustomersQueryAsync();
try
{
foreach (Account cust in container)
{
Console.WriteLine("Customer Name: {0}, Acc No.: {1}", cust.Name, cust.AccountNumber);
}
}
catch (DataServiceQueryException ex)
{
throw new ApplicationException("An error occurred during query execution.", ex);
}
这是在针对 netcoreapp3.0 的控制台应用程序上测试的,因此应该可以在 Blazor 应用程序上运行。有什么问题会在这里回复。
希望它能帮助任何其他想要做相同或类似事情的人。