Я хочу, чтобы у меня был правильный код для асинхронного вызова моей веб-службы. Если кто-то может помочь, я был бы очень признателен.вызов wcf 4.5 службы WCF асинхронно
Я использую 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();
I в моем классе веб-сервисов, который реализует класс интерфейса для того же метода:
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);
Я не всегда называю услуги WCF пьяными, но когда я это делаю, я называю их асинхронно. – Will