WCF数据服务入门

本文关键字:服务 数据 WCF | 更新日期: 2023-09-27 17:59:16

这是我在空白web应用程序(.Net 4)中仅有的代码:

public class Spork
{
    public string Name { get; set; }
    public DateTime BirthDate { get; set; }
}
public class WcfDataService1 : DataService<Spork>
{
    public static void InitializeService(DataServiceConfiguration config)
    {
        config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
        config.SetEntitySetPageSize("*", 26);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
    }
    [WebGet]
    public IQueryable<Spork> Get()
    {
        List<Spork> retval = new List<Spork>();
        retval.Add(new Spork() { BirthDate = DateTime.Now, Name = "jason" });
        return retval.AsQueryable<Spork>();
    }
}

如果我转到http://localhost:1285/WcfDataService1.svc/,我会得到以下响应:

<service xml:base="http://localhost:1285/WcfDataService1.svc/">
    <workspace>
        <atom:title>Default</atom:title>
    </workspace>
</service>

我想,到目前为止还不错。现在,我想去http://localhost:1285/WcfDataService1.svc/Get获取我的spork。但我得到一个"找不到段"get"的资源。"错误。我误解了什么?

WCF数据服务入门

您使用的是DataService,但Spork不是数据源(Context),而是实体类。

尝试在数据上下文中定义Spork,例如使用实体框架模型或Linq-To-Sql模型。

您似乎正在尝试将REST与WCF一起使用。可以这样做(请参见:http://msdn.microsoft.com/en-us/magazine/dd315413.aspx)但在默认情况下,WCF是基于SOAP的。如果你想使用URL+动词,你必须在web.config中设置它。

祝你好运!