Я хочу убедиться, что у меня есть правильный код для асинхронного вызова моей веб-службы. Если кто-то может помочь, я был бы очень признателен.
Я использую Visual Studio 2013 с платформой 4.5.1.
У меня есть следующий код в моем клиентском приложении, выполняющем вызов службы:
public async Task<ActionResult> Read([DataSourceRequest]DataSourceRequest request)
{
try
{
YeagerTechWcfService.Status[] status = await db.GetStatusesAsync();
var serializer = new JavaScriptSerializer();
var result = new ContentResult();
serializer.MaxJsonLength = Int32.MaxValue;
result.Content = serializer.Serialize(status.ToDataSourceResult(request));
result.ContentType = "application/json";
return result;
}
В моем сервисном контракте WCF для вышеуказанного вызова метода есть следующее:
[ServiceContract]
public interface IYeagerTechWcfService
{
[OperationContract]
Task<List<Status>> GetStatusesAsync();
У меня есть следующее в моем классе веб-сервиса, который реализует класс интерфейса для того же метода:
public class YeagerTechWcfService : IYeagerTechWcfService
{
public async Task<List<Status>> GetStatusesAsync()
{
try
{
using (YeagerTechEntities DbContext = new YeagerTechEntities())
{
DbContext.Configuration.ProxyCreationEnabled = false;
DbContext.Database.Connection.Open();
var status = await DbContext.Status.ToListAsync();
return status;
}
}
catch (Exception)
{
throw;
}
}
Согласно тому, что я читал дальше, мне также нужно было бы поместить следующее после моего атрибута OperationContract: *Это правда?*
[OperationContractAttribute(AsyncPattern = true)]
IAsyncResult BeginGetStatusesAsync(AsyncCallback callback, object asyncState);
string EndGetStatusesAsync(IAsyncResult result);