2011-06-16 78 views
4

这是我在一张原本空白的Web应用程序的唯一代码(.NET 4):开始使用WCF数据服务

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。但是我得到了一个“找不到资源的资源'获取'。”错误。我误解了什么?

回答

2

您正在使用DataService,但Spork不是数据源(Context),它是一个实体类。

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

0

看来你正在尝试使用REST和WCF。可以这样做(请参阅:http://msdn.microsoft.com/en-us/magazine/dd315413.aspx),但默认情况下,WCF是基于SOAP的。如果你想使用URL +动词,你将不得不在你的web.config中设置它。

祝你好运!

+0

WCF数据服务支持OData(= Atom + REST)。 – 2011-06-20 07:33:41