Веб-страница WCF WebHttp Services .NET 4.0 недоступна при переходе к методу в службе. Работа на веб-сервере разработки в VS 2010

Я создал службу WCF в .NET 4.0, которая в основном просто выполняет стандартный CRUD для пары таблиц в базе данных MS SQL Server 2005. Я использую класс данных ADO .NET Entity для сопоставления с таблицами базы данных. До сих пор это было очень просто. Я просто вытащил таблицы на поверхность конструктора и позволил инструменту сделать всю работу за меня.

Вот моя проблема. Один из методов службы выдает ошибку (Internet Explorer не может отобразить веб-страницу) при попытке получить с нее какие-либо данные. IE ведет себя так, как будто не может связаться с сервером, но сервер — это моя локальная машина, и на самом деле он может связаться с сервером, когда я просматриваю различные методы. Вот метод:

[WebGet(UriTemplate = "POS_AllowedValues")]
    public List<POS_AllowedValues> GetAllowedValues()
    {
        using (DENTSPLYEntities dentsply = new DENTSPLYEntities())
        {
            var allowed = dentsply.POS_AllowedValues.ToList();
            return allowed;
        }

    }

Если я полностью не в себе, это должно возвращать список объектов POS_AllowedValues ​​​​при нажатии на URL-адрес службы и добавлении «/ POS_AllowedValues» в конец. Глядя на страницу справки службы, это действительно то, на что она указывает.

Что меня действительно убивает, так это то, что все остальные методы работают нормально. Например, вот метод GetPOSAccountXref

[WebGet(UriTemplate = "POS_AccountXref")]
    public List<POS_AccountXref> GetPOSAccountXref()
    {
        using (DENTSPLYEntities dentsply = new DENTSPLYEntities())
        {
            var posXref = dentsply.POS_AccountXref.ToList();
            return posXref;
        }

    }

Это прекрасно работает! Единственное различие, которое я могу найти между ними, заключается в том, что объект POS_AllowedValues ​​содержит свойство навигации к одному из других объектов таблицы, а объект POS_AccountXref — нет.

В основном я следую сообщению в блоге, найденному на blogs.msdn.com, под названием Приступая к работе со службами WCF WebHttp в .NET 4.

Кроме того, я запускаю это на веб-сервере разработки в VS. Это полностью работает на моей машине разработки, используя Windows 7 и VS 2010.

Я действительно понятия не имею, почему это не работает. Любая помощь вообще будет принята с благодарностью.


person John Norcott    schedule 31.08.2010    source источник
comment
Какую ошибку он вам выдает?   -  person Steve Michelotti    schedule 01.09.2010
comment
Да, знание ошибки помогло бы.   -  person David Hoerster    schedule 01.09.2010
comment
Извините, Стив и Ди... Я пропустил ваши комментарии и только сейчас понял, что не включил ошибку. Я добавлю ошибку в тело вопроса для дальнейшего использования. Во всяком случае, ответ Ладислава сработал для меня.   -  person John Norcott    schedule 01.09.2010


Ответы (1)


Отключите ленивую загрузку вашей объектной модели. Ленивая загрузка используется по умолчанию. Когда вы возвращаете свой список POS_AllowedValues, сериализация обращается к свойству навигации и пытается загрузить связанные объекты. Но в это время контекст объекта уже удален, и возникает исключение. Если вы также хотите отправить связанные объекты, вы должны явно загрузить их (нетерпеливая загрузка) с помощью функции Include() для запрашиваемого набора объектов.

person Ladislav Mrnka    schedule 01.09.2010