Как я могу использовать Службу WCF? - PullRequest
0 голосов
/ 08 ноября 2018

Когда я создаю новую службу WCF, я могу создать новый метод, подобный этому:

 [OperationContract]
 [WebInvoke(Method = "GET", UriTemplate = "TryThis", ResponseFormat = WebMessageFormat.Json)]
 string TryThis();

Функция, которая возвращает простую строку.

Я могу использовать его с тестовым клиентом WCF, и это работает. Но когда я хочу получить доступ к своему сервису с помощью Chrome, почтальона или приложения для Android, я не могу.

Я пытался с тезисами URL:

 http://localhost:54792/Service1.svc/TryThis
 http://tempuri.org/IService1/TryThis

Когда я использую 'http://localhost:54792/Service1.svc', у меня есть домашняя страница, так что все в порядке. Но у меня нет доступа ни к какому способу моего обслуживания.

Ошибка 400. но у меня нет сообщений, указывающих, где эта ошибка. Я не знаю, является ли это конфигурация моего сервера IIS, если это моя служба. Я полностью заблокирован.

Это мой web.config:

<?xml version="1.0" encoding="utf-8"?>
 <configuration>
   <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/>
   </appSettings>
    <system.web>
     <compilation debug="true" targetFramework="4.7.1" />
     <httpRuntime targetFramework="4.7.1"/>
    </system.web>
    <system.serviceModel>
     <behaviors>
       <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
       </serviceBehaviors>
     </behaviors>
     <protocolMapping>
         <add binding="basicHttpsBinding" scheme="https" />
     </protocolMapping>    
     <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    </system.serviceModel>
   <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
     <directoryBrowse enabled="true"/>
   </system.webServer>
 </configuration>

PS: я уже видел этот пост: " Как я могу получить доступ к службам WCF с помощью веб-ссылки? ", но это не помогло мне.

1 Ответ

0 голосов
/ 08 ноября 2018

Похоже, что вы размещаете службу WCF в IIS и хотите опубликовать службу в стиле Restful, вы можете обратиться к следующему коду.
Сервер: IService.cs

namespace WcfService5
{
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        [WebGet]
        string GetData(int value);
    }
}

Сервер: Service.svc.cs

namespace WcfService5
{
    public class Service1 : IService1
    {
        public string GetData(int value)
        {
            return string.Format("You entered: {0}", value);
        }
    }
}

Web.config.

<system.serviceModel>
    <services>
      <service name="WcfService5.Service1">
        <endpoint address="" binding="webHttpBinding" contract="WcfService5.IService1" behaviorConfiguration="MyRest"></endpoint>
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="MyRest">
          <webHttp />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
        <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

Результат. enter image description here

Не стесняйтесь, дайте мне знать, если есть что-то, с чем я могу помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...