Могу ли я использовать отдельный объект для хранения ссылки на сервер? - PullRequest
1 голос
/ 25 марта 2011

Я создаю объект ведения журнала, который будет принимать все отправленные ему журналы и, через WCF и MSMQ (netMsmqBinding), отправлять их в нашу базу данных.Этот объект ведения журнала имеет служебную ссылку на LoggingHost (которая содержит контракт и все обязательные материалы WCF).

У меня есть тестовый класс, состоящий из простой веб-формы, в которую я ввожу сообщение, и оно отправляется этому объекту регистрации, а затем в нашу базу данных.Проблема, с которой я сталкиваюсь, заключается в том, что единственный способ заставить эту простую функциональность работать - это, если у этого тестового класса также есть Ссылка на Сервис на тот же класс LoggingHost, который несколько убивает всю точку этого объекта журналирования (я хочуинкапсулировать все функциональные возможности WCF и MSMQ внутри этого объекта журналирования, чтобы я мог просто нажать Logger.Debug («message»), и он позаботится об отправке сообщения в нашу базу данных).

Любые идеи будут хороши,Дайте мне знать, если мне нужно уточнить, что я пытаюсь выполнить.


РЕДАКТИРОВАТЬ

Извините, должен был поставить ошибку, которая появляется, когда я использую мою тестовую страницу для отправкирегистратор сообщение.Если на тестовой странице нет ссылки на сервис, я получаю эту ошибку.Если у него есть ссылка, все работает как надо.

Could not find default endpoint element that references contract 'ServerLogger.ILoggingService' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element.

1 Ответ

1 голос
/ 25 марта 2011

Некоторая конфигурация для вашего объекта регистрации должна быть скопирована в конфигурацию вашего тестового приложения. В частности, в проекте вашего объекта журналирования после добавления ссылки на сервис у вас теперь должен быть app.config. Вам в значительной степени нужен весь

<system.ServiceModel>
    <!--service reference config info-->
</system.ServiceModel>

часть этого app.config скопирована в app.config вашего тестового приложения.

EDIT

Точнее, есть раздел, который выглядит так:

<client>
    <endpoint address="some URI" binding="some binding type"
        contract="contract for your service name="name" />
</client>

Это внутри раздела system.serviceModel в конфигурации. Это конечная точка, указанная в получаемой вами ошибке. Этот конфиг необходим для того, чтобы сообщить клиенту, куда обращаться, чтобы поговорить со службой.

...