【问题标题】:How to access async methods from WCF?如何从 WCF 访问异步方法?
【发布时间】:2013-07-13 10:34:10
【问题描述】:

这是我的 WCF 服务,其方法为 signIn(),它在数据库中查找用户并返回 UserID

[ServiceContract]
public interface IService1
{


    [OperationContract]
    int signIn(string username, string password);
}

以及派生类Service1

public class Service1 : IService1
{
public int signIn(string username, string password)
    {
        GetHiredDBContext db = new GetHiredDBContext();

        foreach (User user in db.Users)
        {
            if(user.Username==username)
                if (user.Password == password)
                {
                    return user.UserID;
                }
        }
        return -1;
    }

当我在我的 Windows 8 应用商店应用程序中将此 WCF 服务设置为服务引用并访问此方法 - signIn() 时,它说此方法是 async

我的问题是如何将方法的返回值写入变量并在客户端使用它?

【问题讨论】:

    标签: c# wcf windows-8 windows-store-apps async-await


    【解决方案1】:

    如果您正在使用 Windows 应用商店应用程序,那么您希望熟悉异步编程和 await 关键字。它并不特定于 WCF。

    使用

    var userId = await serviceClient.signIn(userName, password);
    

    【讨论】:

    • 我的方法 signIn() 是否必须返回类型 Task 而不仅仅是 int?
    • 没有。它应该只返回 int。
    • 错误:await 操作符只能在异步方法中使用
    • 好的,所以你的调用方法需要是async: private async bool IsValidUser(username, password) 什么的。真的,请阅读我在await 上链接到的文章。我的理解是,您在 Windows 应用商店应用中所做的大部分事情都是异步的。
    • 您应该在解决方案中添加答案。您可以从中获得支持。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 2017-11-23
    • 2014-04-30
    • 2014-07-09
    • 1970-01-01
    相关资源
    最近更新 更多