Веб-страница WCF WebHttp Services .NET 4.0 недоступна при просмотре метода в службеЗапуск на веб-сервере разработки в VS 2010 - PullRequest
1 голос
/ 31 августа 2010

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

Вот моя проблема.Один из методов службы выдает ошибку (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 Services в .NET 4 .

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

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

1 Ответ

0 голосов
/ 01 сентября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...