Создание службы WCF

1

Я новичок в WCF. Я создал приложение службы wcf и в нем есть интерфейс и класс.

Мой интерфейс:

using System.ServiceModel;

namespace WcfService1
{   
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        string Display();        
    }    
}

Мои занятия:

namespace WcfService1
{
    public class Service1 : IService1
    {
        public string Display()
        {
            return "Hello";
        }
    }
}

Теперь, когда я запускаю эту службу в браузере. Следующий экран появится после нажатия на Service1.svc

Изображение 174551

Хо, я обращаюсь к Display() в браузере?

После первого ответа, следующее:

Изображение 174551

  • 0
    попробуйте Service1.svc/Display
  • 0
    @EhsanSajjad Я попробовал " localhost: 22727 / Service1.svc / Display ". Но ничего не происходит
Показать ещё 7 комментариев
Теги:
wcf

2 ответа

2
Лучший ответ

Я думаю, что вы ищете WebGet, если хотите получить доступ к нему через свой браузер.

using System.ServiceModel;
using System.ServiceModel.Web;

namespace WcfService1
{   
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        [WebGet(RequestFormat = WebMessageFormat.XML, ResponseFormat = WebMessageFormat.XML, UriTemplate = "/display/")]
        string Display();        
    }    
}

Добавьте эти поведения

<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehaviour">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="web">
      <webHttp />
    </behavior>
  </endpointBehaviors>
</behaviors>

Добавьте этот адрес конечной точки

  <service behaviorConfiguration="ServiceBehaviour" name="WCFService1.Service1">
      <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding"
      bindingConfiguration="b_WebHttpBinding" contract="WCFService1.IService1" />
  </service>

Добавить эту привязку

<bindings>
  <webHttpBinding>
    <binding name="b_WebHttpBinding" closeTimeout="00:01:00"
        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
        allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
        maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" transferMode="Buffered"
        useDefaultWebProxy="true" crossDomainScriptAccessEnabled="true">
      <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647"
          maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
      <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None"
            realm="" />
      </security>
    </binding>
  </webHttpBinding>
</bindings>

Теперь вы можете позвонить в службу, например

http://localhost:22727/Service1.svc/display/

Затем он должен отображать строку в формате XML (вы можете изменить ее на JSON, если хотите)

Кроме того, убедитесь, что вы ссылаетесь на следующие библиотеки

System.ServiceModel.Web
System.Web.Extensions
System.Web.Services
System.Web

http://msdn.microsoft.com/en-us/library/bb412172(v=vs.110).aspx

  • 0
    Я следил за твоим кодом. Это не работает. Смотрите выше скриншот
  • 0
    Я изменил XML на JSON. Теперь он возвращает HELLO. Благодарю.
0

Разделите решение на два проекта:

  • Новый проект → WCF → Библиотека WCF
  • Новый проект → WCF → Приложение службы WCF

"Service Application" - это ваш веб-проект, содержащий конечную точку svc. "Библиотека услуг" - это библиотека классов, содержащая ваши службы.

Когда вы запустите (F5) проект библиотеки служб, Visual Studio запустит тестовый клиент WCF (WcfTestClient.exe), предоставив вам быстрый интерфейс для тестирования ваших услуг.

Конечная точка.svc в вашем веб-проекте не дает вам встроенного тестового интерфейса (аналогично тому, как он работал в дни asmx).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню