Где включить метаданные (включено в конфиге)? - PullRequest
3 голосов
/ 10 октября 2009

У меня есть базовая служба wcf, и когда я захожу в wcfctestclient, чтобы проверить его, я получаю сообщение об ошибке, в котором говорится, что метаданные не могут быть найдены, пожалуйста, добавьте его и т. Д. К сожалению, ссылка MSDN во всплывающем окне с ошибкой не работает, и моя служба WCF В app.config включены метаданные:

  <serviceBehaviors>
    <behavior name="TelerikWcfServices.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>

Кроме этого, я нигде не изменил никаких настроек метаданных в моем коде.

Где я могу включить метаданные, чтобы исправить ошибку?

Ответы [ 3 ]

3 голосов
/ 10 октября 2009

Вам необходимо добавить конечную точку обмена метаданными (MEX) в ваш сервисный узел. Попробуйте что-то вроде этого:

<endpoint 
    address="http://host/svc/mex" 
    binding="mexHttpBinding" 
    bindingConfiguration=""
    contract="IMetadataExchange"/>
1 голос
/ 19 марта 2014

Если вы используете Workflow 4.0 с WorkflowServiceHost и загружаете свой сервис из ресурса xamlx, он не распознает тег WCB serviceBehavior с именем. Я не знаю почему (мне кажется, это ошибка). Например, этот тег сверху:

<serviceBehaviors>
    <behavior name="TelerikWcfServices.Service1Behavior">
      <serviceMetadata httpGetEnabled="True"/>
      <serviceDebug includeExceptionDetailInFaults="False" />
    </behavior>
  </serviceBehaviors>

необходимо удалить атрибут name следующим образом:

<serviceBehaviors>
    <behavior>
      <serviceMetadata httpGetEnabled="True"/>
      <serviceDebug includeExceptionDetailInFaults="False" />
    </behavior>
  </serviceBehaviors>

и элемент службы исключит ссылку на имя конфигурации поведения, как в

<service 
    name="TelerikWcfServices.IScheduler">
    <endpoint address="http://localhost/Telerik" binding="basicHttpBinding"
      bindingConfiguration="" name="Telerik"      contract="TelerikWcfServices.IScheduler">...
0 голосов
/ 10 октября 2009

Я ответил на свой вопрос, так как это единственный простой способ показать файл целиком:

<client>
  <endpoint address="http://localhost/Telerik" binding="basicHttpBinding"
    bindingConfiguration="" contract="TelerikWcfServices.IScheduler"
    name="Telerik">
    <identity>
      <dns value="localhost" />
      <certificateReference storeName="My" storeLocation="LocalMachine"
        x509FindType="FindBySubjectDistinguishedName" />
    </identity>
  </endpoint>
</client>
<diagnostics>
  <messageLogging logEntireMessage="true" />
</diagnostics>
<services>
  <service behaviorConfiguration="TelerikWcfServices.Service1Behavior"
    name="TelerikWcfServices.IScheduler">
    <endpoint address="http://localhost/Telerik" binding="basicHttpBinding"
      bindingConfiguration="" name="Telerik" contract="TelerikWcfServices.IScheduler">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8731/Design_Time_Addresses/TelerikWcfServices/Service1/" />
      </baseAddresses>
    </host>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="TelerikWcfServices.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>

Спасибо за вашу помощь!

...