2015-05-11 6 views
0

Я пытаюсь использовать сервис в своем модуле в веб-конфигурации модуля. Я добавил конфигурацию сервиса следующим образом.Как использовать службу WCF в Orchard

<system.serviceModel> 
<bindings> 
    <basicHttpBinding> 
    <binding name="WSEventSoap" /> 
    <binding name="BasicHttpBinding_ITwitterService" /> 
    <binding name="BasicHttpBinding_ILoyalty"> 
     <security mode="Transport" /> 
    </binding> 
    </basicHttpBinding> 
</bindings> 
<client> 
    <endpoint name="BasicHttpBinding_ITwitterService" 
     address="wwww.mysite.com/MediaServices/TwitterService.svc" 
     binding="basicHttpBinding" 
     bindingConfiguration="BasicHttpBinding_ITwitterService" 
     contract="TwitterService.ITwitterService" /> 
</client> 
</system.serviceModel> 

в рамках модулей web.config. То, что я заметил, что

  1. Я не могу показаться, чтобы получить доступ к настройкам веб-конфигурации в моем модуле
  2. я получаю следующее сообщение об ошибке.

Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт «TwitterService.ITwitterService» в разделе конфигурации клиента ServiceModel. Возможно, это связано с тем, что файл конфигурации не найден для вашего приложения или потому, что элемент-конечный элемент, соответствующий этому контракту, не найден в клиентском элементе.

Просьба помочь.

+0

Добавить его в Orchard.Web web.config – Hazza

+0

Ну, веб-модуля. config не поможет, и глобальный web.config является общим ресурсом, поэтому его не следует использовать, так как это предотвратит перенос вашего модуля на другой экземпляр Orchard без необходимости изменения его web.config. Единственное чистое решение, которое я вижу, - это запросить услугу без этой обязательной работы. В конце концов, веб-сервис просто использует http. –

ответ

0

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

Вместо этого мы только что создали привязку и конечную точку в коде, а вместо этого их вытащили из конфига. Мы добавили собственные настройки к настройкам сайта Orchard, чтобы пользователь мог указать адрес конечной точки через панель управления admin, которая является единственной частью, которую мы действительно должны настраивать.

Для этого в модуле добавьте служебную ссылку как обычно, если она добавит эти разделы в ваш модуль web.config, удалите их, поскольку вы их не будете использовать.

Затем в коде сделать что-то вроде

Binding binding = new BasicHttpBinding(); 
EndpointAddress address = new EndpointAddress("http://localhost:8050/MyService/"); 

using (var client = new MyServiceClient(binding, endpointAddress)) 
{ 
    client.MyMethod(); 
} 

Там в примерах много это на Stackoverflow и в других местах (например, WCF: How can I programatically recreate these App.config values?)

Смежные вопросы