Я новичок в 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
Хо, я обращаюсь к Display() в браузере?
После первого ответа, следующее:
Я думаю, что вы ищете 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
Разделите решение на два проекта:
"Service Application" - это ваш веб-проект, содержащий конечную точку svc. "Библиотека услуг" - это библиотека классов, содержащая ваши службы.
Когда вы запустите (F5) проект библиотеки служб, Visual Studio запустит тестовый клиент WCF (WcfTestClient.exe), предоставив вам быстрый интерфейс для тестирования ваших услуг.
Конечная точка.svc в вашем веб-проекте не дает вам встроенного тестового интерфейса (аналогично тому, как он работал в дни asmx).
Service1.svc/Display