Не удалось добавить сервис. Метаданные службы могут быть недоступны. Убедитесь, что ваш сервис запущен и предоставляет метаданные.

Пытается создать службу RestFull с wcf, работающим в WcfTestClient.exe. Проблема в том, что я получаю ошибку:

Failed to add a service. Service metadata may not be accessible.

Я добавил конечную точку mex в файл конфигурации, но не решил ее:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="MyRest.Service"  behaviorConfiguration="ServBehave">
        <!--Endpoint for REST-->
        <endpoint
          address="XMLService"
           binding="webHttpBinding"
           behaviorConfiguration="restPoxBehavior"
           contract="MyRest.IService"/>
        <endpoint
            address="mex"
            binding="mexHttpBinding"
            contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServBehave" >
          <!-- 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>
      <endpointBehaviors>
        <!--Behavior for the REST endpoint for Help enability-->
        <behavior name="restPoxBehavior">
          <webHttp helpEnabled="true"/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

IService1.cs

 [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        [WebGet(UriTemplate = "/Employees", ResponseFormat = WebMessageFormat.Xml)]
        Employee[] GetEmployees();

    }

    [DataContract]
    public class Employee
    {
        [DataMember]
        public int EmpNo { get; set; }
        [DataMember]
        public string EmpName { get; set; }
        [DataMember]
        public string DeptName { get; set; }
    }

Service1.cs

 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    public class Service1 : IService1
    {
        public Employee[] GetEmployees()
        {
            return new Employee[] 
             {
                  new Employee() {EmpNo=101,EmpName="Mahesh",DeptName="CTD"},
                  new Employee() {EmpNo=102,EmpName="Akash",DeptName="HRD"}
             };
        }
    }

1 ответ

Решение

С сервисом WCF Restful нужны ли вам метаданные для предоставления сервиса или работы с ним? Ответ - нет". Это против принципов Отдыха. Метаданные представляют интерфейс (операции), а для REST интерфейс является фиксированным (методы http). WcfTestClient предназначен для тестирования Сервиса на основе SOAP (поскольку они должны предоставлять свой интерфейс через мекс-привязки).

Тестирование службы RESTFUL для http get может быть очень простым. Вы просто должны вызвать его из браузера, используя URL. Чтобы протестировать другие методы http, вы должны создать свой собственный клиент. Если это кажется большой задачей, вы также можете использовать такие инструменты, как Fiddler, для создания данных запроса. Пример можно увидеть здесь

Другие вопросы по тегам