Публикация метаданных Wcf Facility для этой службы в настоящее время отключена - PullRequest
1 голос
/ 09 апреля 2010

Я пытаюсь подключиться к моей службе Wcf, которая настроена с использованием средства wcf castles.

Когда я захожу на сервис в браузере, я получаю:

Metadata publishing for this service is currently disabled.

Который перечисляет множество инструкций, которые я не могу сделать, потому что конфигурация отсутствует в web.config.

когда я пытаюсь подключиться, используя VS / добавить ссылку на сервис, я получаю:

The HTML document does not contain Web service discovery information.
Metadata contains a reference that cannot be resolved: 'http://s.ibzstar.com/userservices.svc'.
Content Type application/soap+xml; charset=utf-8 was not supported by service http://s.ibzstar.com/userservices.svc.  The client and service bindings may be mismatched.
The remote server returned an error: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'..
If the service is defined in the current solution, try building the solution and adding the service reference again.

Кто-нибудь знает, что мне нужно сделать, чтобы это работало?

Конечный клиент - это приложение для iPhone, написанное с использованием Monotouch, если это имеет значение - так что на стороне клиента нет замка виндзор.

ура

ш: //

Вот Windsor.config из сервиса:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <components>

<component id="eventServices"
               service="IbzStar.Domain.IEventServices, IbzStar.Domain"
               type="IbzStar.Domain.EventServices, IbzStar.Domain"
       lifestyle="transient">
</component>

<component id="userServices"
              service="IbzStar.Domain.IUserServices, IbzStar.Domain"
              type="IbzStar.Domain.UserServices, IbzStar.Domain"
      lifestyle="transient">
</component>

Раздел Web.config:

 <system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<services>

</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="IbzStar.WebServices.Service1Behavior">
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>

Мой App_Start содержит это:

 Container = new WindsorContainer(new XmlInterpreter(new ConfigResource()))
            .AddFacility<WcfFacility>()
            .Install(Configuration.FromXmlFile("Windsor.config"));

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

Ответы [ 3 ]

0 голосов
/ 10 апреля 2010

Раздел services в вашем web.config пуст. Windsor WCF Facility не отменяет требования к конфигурации; он все еще должен быть там, и он должен соответствовать разделу component вашего Windsor.config.

Из быстрого старта - все это нужно добавить в ваш web.config:

<services>
    <service name="IbzStar.Domain.EventServices"
             behaviorConfiguration="IbzStar.WebServices.Service1Behavior">
      <endpoint contract="IbzStar.Domain.IEventServices"
                binding="basicHttpBinding"/>
    </service>
</services>
0 голосов
/ 14 апреля 2010

вот обновленный конфигуратор:

<system.serviceModel>
    <!--<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>-->
    <services>
      <service behaviorConfiguration="userServicesBehaviour" name="userServices">
        <endpoint binding="wsHttpBinding" contract="IbzStar.WebServices.IUserServices" />
        <endpoint binding="basicHttpBinding" contract="IbzStar.WebServices.IUserServices" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="userServicesBehaviour">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>  
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

проблема, с которой я столкнулся, достаточно близка к примеру на этом сайте:

http://mikehadlow.blogspot.com/2008/11/windsor-wcf-integration.html

Почтовый индекс прикреплен к сообщению в блоге - в этом примере также не опубликована мета.

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

ш: //

0 голосов
/ 09 апреля 2010

На основании сообщения об ошибке здесь:

HTML-документ не содержит веб служба обнаружения информации. Метаданные содержат ссылку, которая не может быть решен: «http://s.ibzstar.com/userservices.svc'.

Это может означать, что существует проблема с тем, как WCF публикует свой файл WSDL - он обычно содержит ссылку на отдельный внешний XSD-файл, с которым многие клиенты не могут справиться (даже если он на 100% соответствует стандартам) .

Тип контента приложения / мыло + xml; charset = utf-8 не поддерживается оказание услуг http://s.ibzstar.com/userservices.svc. Привязки клиента и сервиса могут быть несовпадающими. Удаленный сервер вернул ошибку: (415) Не удается обработать сообщение потому что тип контента «Приложения / мыло + XML; кодировка = UTF-8' не был ожидаемый тип 'text / xml; кодировка = UTF-8' ..

Похоже, что это означает, что клиент хочет общаться по протоколу SOAP, в то время как сервер не настроен для SOAP (возможно, вместо этого для REST).

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

...