Как использовать службу WCF с HTTP GET (в Visual Studio 2010)

StackOverflow https://stackoverflow.com/questions/4279464

  •  28-09-2019
  •  | 
  •  

Вопрос

Мы постарались использовать очень простое обслуживание WCF с HTTP GET, и мы не можем заставить его работать. Мы следили за тем «руководством», но это не работает

Когда мы называем наш сервис со следующим URL, мы получаем страницу не найдут ошибку:

http: // localhost: 9999 / Service1.svc / getdata / abc

Базовый URL (http: // localhost: 9999 / Service1.svc) работает нормально и вернет страницу информации об услуге WCF.

Это шаги и код для воспроизведения нашего примера.

  1. В Visual Studio 2010 создайте новый проект «Приложение WCF Service»
  2. Замените интерфейс ISERVICE с помощью этого кода

      [ServiceContract()]
      public interface IService1
      {
          [OperationContract()]
          [WebInvoke(Method = "GET", 
                     BodyStyle = WebMessageBodyStyle.Bare, 
                     UriTemplate = "GetData/{value}")]
          string GetData(string value);
      }
    
  3. Замените класс услуг этим кодом

    public class Service1 : IService1
    {
        public string GetData(string value)
        {
            return string.Format("You entered: {0}", value);
        }
    }
    
  4. Web.config выглядит так

    <system.web>
       <compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
    </system.web>
    <system.serviceModel>
      <services>
          <service name="Service1">
              <endpoint address="" binding="webHttpBinding" contract="IService1" behaviorConfiguration="WebBehavior1">
              </endpoint>
          </service>
      </services>
      <behaviors>
          <endpointBehaviors>
              <behavior name="WebBehavior1">
                 <webHttp helpEnabled="True"/>
        </behavior>
    </endpointBehaviors>
    <serviceBehaviors>
    <behavior>
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
      </behavior>
    </serviceBehaviors>
    

  5. Нажмите RUN и попробуйте позвонить в метод получения

Если кто-то получает это или что-то подобное, это было бы очень добру, если бы вы могли ответить с информацией о рабочем примере.

Спасибо большое

Это было полезно?

Решение

Я воссоздал ваш образец - работает как очарование.

Одна точка: сделать ваш договор на обслуживание (public interface IService1) и внедрение услуги (public class Service1 : IService1) существовать внутри .NET имен пространства ??

Если это так, вам нужно изменить свой * .svc и ваш web.config включать:

<services>
      <service name="Namespace.Service1">
          <endpoint address="" binding="webHttpBinding" 
                    contract="Namespace.IService1" 
                    behaviorConfiguration="WebBehavior1">
          </endpoint>
      </service>
  </services>

То <service name="..."> атрибут и то <endpoint contract="..."> Должен включать пространство имен .NET для этого на работу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top