【问题标题】:How can I call a RIA service from another RIA service?如何从另一个 RIA 服务调用 RIA 服务?
【发布时间】:2010-09-30 12:54:15
【问题描述】:

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

    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 服务”等类似内容时发现的结果与实际从另一个调用一个无关。从范式的角度来看,我做错了什么吗?如果没有,你到底是怎么做到的? :)

【问题讨论】:

    标签: wcf-ria-services domainservices


    【解决方案1】:

    当您只想查询时聚合 DomainServices 非常简单。类似的东西

    新的 MyDomainService().GetUser(userName)

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

    此外,对于您的场景,可能值得查看自定义身份验证示例 here。对于您正在尝试做的事情,这是一种略有不同的方法。

    【讨论】:

    • 好吧,我不觉得自己像个工具吗:P。我没有 GetUser(userName)。相反,我只有我试图 .Where() 或使用 LINQ 的 GetUsers()。由于一些非常复杂的原因,这些都没有解决(有时会尝试一下:)。一旦我添加了一个返回单个用户对象的 GetUser,我就很成功了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多