Искам да съм сигурен, че разполагам с правилния код за асинхронно повикване към моята уеб услуга. Ако някой може да помогне, ще съм много благодарен.
Използвам 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);