Как изменить свою службу WCF для работы с страницами ASP.NET?

StackOverflow https://stackoverflow.com/questions/2542148

  •  23-09-2019
  •  | 
  •  

Вопрос

Я создал службу WCF (.net 3.5), которая получает данные из DB и возвращает список объектов. Это работает просто отлично. Я проверил его, используя приложение wcftestClient и получил желаемые результаты.

Теперь я попытался создать веб -приложение ASP.NET и потреблять Сервис. После включения <serviceDebug includeExceptionDetailInFaults="true"/> В файле конфигурации сообщение об ошибке - это «ссылка на объект не установлен на экземпляр объекта».

Как изменить службу для работы с ASP.NET?

Спасибо!

Обновление 1 - Я создал ссылку на службу. Когда я запустил свое самое основное приложение для тестирования, на основе примера кода, отображаемого на веб -странице службы по умолчанию, я получил сообщение «Справочник по объекту, не установленную на экземпляре объекта».

Служба возвращает правильные результаты, когда я использую утилиту тестового клиента WCF, предоставленную Visual Studio. Когда я пытаюсь использовать следующий код, все в событии page_load, я получаю ссылочное сообщение объекта.

PhoneNumberServiceClient client = new PhoneNumberServiceClient();

// Use the 'client' variable to call operations on the service
List<PhoneNumber> phones = client.GetPhoneNumbers();  

// Always close the client.
client.Close();

Я постараюсь получить дополнительную информацию отладки.

Это было полезно?

Решение

Вы пробовали открыть службу после того, как инициализировали ее, используя:

client.Open();

Если проблема все еще сохраняется, возможно, она лежит на самом методе WCF. Попробуйте добавить точки останова в своем методе и отлаживать его, чтобы отследить причину ошибки. Вы также можете использовать профилировщики.

Другие советы

Вы также должны настроить службу, чтобы разрешить подробности исключения в результатах. Следите за информацией здесь, чтобы это произошло.

Я предполагаю, что ваше приложение ASP.NET ожидает получить определенную информацию из службы, которую вы не настроили, чтобы предоставить, отсюда и ошибку NULL объекта.

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

Вы упомянули, что использовали встроенный тестовый клиент, но когда вы создали свое клиентское приложение (веб -сайт, с которым вы хотите позвонить в свою новую службу), вы настроили его конечную точку (web.config) в соответствии с концом вашей службы WCF ? Например, клиентское приложение, вызывая службу WCF с помощью конечной точки WSHTTPBinding:

<configuration>
<system.serviceModel>
    <client>
        <endpoint address="http://localhost:8080/ContractorService" binding="wsHttpBinding" contract="ContractorService.IContractorService"
            name="ContractorService_WsHttp">
        </endpoint>
    </client>
</system.serviceModel>

Кроме того, ваш сервис возвращает список, Ссылка на службу по умолчанию То, что вы добавили к своему клиенту, скорее всего, останавливается на массиве. Щелкните правой кнопкой мыши ссылка на службу, которую сейчас имеет ваш клиент, и выберите Справочник по настройке службы, в раскрывающемся поле для типа сбора вместо System.Array выберите System.collections.generic.list.

Если вам нужны подробности о конфигурации, проверьте здесь http://msdn.microsoft.com/en-us/library/dd936243.aspx

Поместите точку перерыва в метод Page_load вашего клиента, вы сможете пройти через свой клиент -код, и он автоматически запрыгнет в вашу службу WCF, как только вы назовите его метод, тогда вы сможете точно увидеть, где он сбой. Надеюсь это поможет

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top