向WCF数据服务添加REST方法?

向WCF数据服务添加REST方法?,wcf,rest,wcf-data-services,wcf-rest,Wcf,Rest,Wcf Data Services,Wcf Rest,我需要扩展我的WCF数据服务,以包括其他方法,而不仅仅是数据库表 但它似乎工作不正常 首先我想问这是否合法?还是皱眉 我需要这样做的原因是我需要添加额外的REST方法,这些方法将调用ASP.NET成员资格服务(表位于数据库中),以验证登录,即 public bool IsValidLogin(string username, string password) { return System.Web.Security.Membership.ValidateUser(

我需要扩展我的WCF数据服务,以包括其他方法,而不仅仅是数据库表

但它似乎工作不正常

首先我想问这是否合法?还是皱眉

我需要这样做的原因是我需要添加额外的REST方法,这些方法将调用ASP.NET成员资格服务(表位于数据库中),以验证登录,即

    public bool IsValidLogin(string username, string password)
    {
        return System.Web.Security.Membership.ValidateUser(username, password);
    }
以下是我所拥有的(我简化了IsValidLogin以进行测试)

现在当我去

  http://localhost/MyDataAccess/MyService.svc/IsValidLogin
这似乎是可行的,我得到了一个XML形式的真实反馈。但是我已经设置了一个URI,所以我想我可以这样做

  http://localhost/MyDataAccess/MyService.svc/TestMe
但它失败了?我真的很困惑,有什么想法吗

为了让它工作,我需要添加这一行,但这里有点混乱

    config.SetServiceOperationAccessRule("IsValidLogin", ServiceOperationRights.All);

任何真正受欢迎的帮助

ServiceOperation的概念是一种附加功能,当您想执行从表中读取数据以外的操作时,它可以准确地提供所需的转义

不幸的是,WCF REST中的默认路径导致您误解了RESTful系统应该如何工作。REST不仅仅是在URL上公开一些数据

您确实有两种选择,要么坚持使用基于WS-*/SOAP的WCF提供的RPC风格的分布式计算,要么花一些时间学习REST的真正含义。这里有一些链接可以帮助您开始


我不能告诉你什么是适合你的场景的正确方法。我可以告诉您的是,您不会从当前的WCF REST实现中学到如何进行REST。我并不是说这是不可能做到的,你只是在往上游游了很多水。

没有对上面的其余部分发表评论,只是在文档上发布了一个关于如何进行所谓的“服务操作”的链接:

你的web.config中有什么绑定?为了在WCF中支持SOAP和REST,我有两个具有不同绑定的类。Darrel,我想我现在已经对REST进行了排序,我还有另一个项目正在进行,一切都很好。。。我的数据库通过数据服务公开。我还需要利用ASP.NET成员资格,这是数据库中的表(在我的例子中)。。。所以我想扩展(添加到)我的数据服务项目,以包括一些rest方法……如果你有进一步的评论,我正在听,但我真的不明白我怎么会错过要点?你能详细说明一下吗?WCF Rest使用http方法,如GET、PUT等。。我将GET作为一个方法,并返回一些数据…@mark如果您尝试登录,那么您不是在执行无状态请求。这是一个REST约束。如果您正在对客户端上的对象进行反序列化,并将application/xml作为媒体类型发送(WCF会这样做),则您的请求不是自描述性的。这是另一个REST约束。IsValidLogin违反了资源标识约束。我敢肯定,您不会返回超媒体,也不会使用超媒体驱动的客户端,因此HATEOAS在您的设计目标列表中可能并不高。老实说,我不是说你所做的是错误的,只是不要认为这是休息。谢谢Darrel的评论,我不是在登录。。登录是在客户机上完成的,我只是对web服务的一个请求(在本例中为REST),REST返回XML,无论它是否为有效登录。。。关于反序列化对象,我并不是真的这么做。。rest返回XML,我使用.net类从rest返回的XML填充.net对象。谢谢你的评论。。我将尝试进一步调查
    config.SetServiceOperationAccessRule("IsValidLogin", ServiceOperationRights.All);