如何从其他RIA服务拨打RIA服务?

时间:2010-09-30 12:54:15

标签: wcf-ria-services domainservices

在我的身份验证服务中,我想在我的用户服务上调用方法(查询或调用)来验证凭据。所以,例如:

    protected override AuthUser ValidateCredentials(string name, string password, 
        string customData, out string userData)
    {
        AuthUser user = null;
        userData = null;

        using (UserService svc = new UserService())
        {

            if (the result of a call on UserService shows a valid username/password)
            {
                //Create the user object
                user = new AuthUser()
                {
                    Name = name,
                    UserId = // that user's UserId
                };
            }

            if (user != null)
            {
                //Set custom data fields for HTTP session
                userData = user.UserId.ToString();
            }
        }

        return user;
    }

我在搜索诸如“从另一个ria服务中调用ria服务”之类的内容时发现的结果与实际从另一个服务中调用的结果无关。从范式的角度来看,我做错了什么吗?如果没有,你怎么做到这一点? :)

1 个答案:

答案 0 :(得分:1)

当你想要做的只是查询时,聚合DomainServices非常简单。像

这样的东西

new MyDomainService()。GetUser(userName)

应该工作得很好。但是,当您尝试提交或调用它时会变得更加棘手,因为您需要初始化并处置DomainService。我这样做了一段时间,但我认为您可以覆盖父DS中的Initialize和Dispose,以调用您孩子DS中的方法。对于提交,您将无法直接调用这些方法。相反,您需要创建一个ChangeSet并调用DS.Submit方法。

此外,对于您的方案,可能值得查看自定义身份验证示例here。对于你想要做的事情,这是一种稍微不同的方法。