Начало работы с сервисами данных WCF - PullRequest
4 голосов
/ 17 июня 2011

Это единственный код, который у меня есть в другом пустом веб-приложении (.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>

Пока все хорошо, наверное. Теперь я хочу получить свой spork, перейдя на http://localhost:1285/WcfDataService1.svc/Get. Но я получаю «Ресурс не найден для сегмента« Получить »». ошибка. Что я недопонимаю?

Ответы [ 2 ]

2 голосов
/ 20 июня 2011

Вы используете DataService, но Spork не является источником данных (Context), это класс сущностей.

Попробуйте определить Spork в контексте данных, например, используя модель Entity Framework или Linq.Для Sql модель.

0 голосов
/ 17 июня 2011

Похоже, вы пытаетесь использовать REST с WCF.Это можно сделать (см .: http://msdn.microsoft.com/en-us/magazine/dd315413.aspx), но по умолчанию WCF основан на SOAP. Если вы хотите использовать URL + глагол, вам придется настроить его в файле web.config.

Удачи!

...