【发布时间】:2013-11-21 14:49:08
【问题描述】:
我想确保我有正确的代码来异步调用我的 Web 服务。如果有人可以帮忙,我将不胜感激。
我正在使用带有 4.5.1 框架的 Visual Studio 2013。
我的客户端应用程序中有以下代码调用服务:
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();
我的 Web 服务类中有以下内容,它实现了相同方法的接口类:
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 服务,但当我这样做时,我会异步调用它们。
标签: c# .net wcf asynchronous asp.net-4.5