gpt4 book ai didi

c# - 异步调用 wcf 4.5 WCF 服务

转载 作者:行者123 更新时间:2023-12-02 17:31:38 24 4
gpt4 key购买 nike

我想确保我有正确的代码来异步调用我的 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 服务契约(Contract)中有以下内容:

[ServiceContract]
public interface IYeagerTechWcfService
{
[OperationContract]
Task<List<Status>> GetStatusesAsync();

我的 Web 服务类中有以下内容,它实现了相同方法的接口(interface)类:

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);

最佳答案

不,从 .NET 4.5 开始不再需要 AsyncPattern

我有一篇博文Async WCF Today and Tomorrow它将旧的异步 WCF 方式(博客文章中的“今天”:.NET 4.0)与新的异步 WCF 方式(博客文章中的“明天”:.NET 4.5)进行了比较。

关于c# - 异步调用 wcf 4.5 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20124071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com