Размещение WCF SOAP и службы WCF REST в качестве служб приложений Azure - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь разместить существующую службу WCF и службу WCF REST в качестве служб приложений Azure. Я использовал опцию публикации от Visual Studio, как в посте Здесь

Я могу просмотреть размещенный URL-адрес для сайта WCF SOAP и сайта WCF REST, но когда я добавляю ссылку на службу для сайта WCF SOAP и вызываю на ней метод, я получаю ошибку ниже

То же самое со службой отдыха WCF, когда я вызываю метод REST, теперь я получаю сообщение об ошибке 404.

Не было прослушивания конечной точки на https://wcfservice.azurewebsites.net/WebService.svc, которая могла бы принять сообщение. Это часто вызвано неправильным адресом или действием SOAP. Смотрите InnerException, если имеется, для более подробной информации. Удаленный сервер возвратил ошибку: (404) Not Found.

В журнале невыполненных запросов, т. Е. В журнале w3svcxxxx, указано, что запрос https://WcfService:80/Webservice.svc 404 не найден.

Для Службы Отдыха WCF https://WcfService:80/RESTservice.svc/GetData 404. Состояние не найдено.

Почему служба внутренне вызывает https://WcfService:80,, для этого потребуется настройка для настройки. Пытался поискать, чтобы посмотреть, смогу ли я найти какую-нибудь помощь в этом, но не смог найти много.

Кроме того, у меня есть еще один сайт WCF, который я развернул в Службах приложений, который настроен с базовым HttpBinding, и этот сайт работал нормально, и я смог получить данные, используя его.

Ниже приведен параметр web.config на веб-сайте, я использую wsHttpBinging для службы WCF SOAP

 <system.serviceModel>
<behaviors>
  <serviceBehaviors>
    <behavior name="WebServiceOnline">
      <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="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 name="AjaxBehavior">
      <webHttp />
    </behavior>
  </endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>
  <service name="WcfService.WebServiceOnline" behaviorConfiguration="WebServiceOnline">
    <endpoint binding="wsHttpBinding" bindingName="wsSecurityByTransport" contract="WcfService.IWebServiceForOnline" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
  <service name="WcfService.RESTService" behaviorConfiguration="WebServiceOnline">
    <endpoint address="" binding="webHttpBinding" contract="WcfService.IRESTService" name="RunningBarbus.Services.RunningBarbusService" behaviorConfiguration="AjaxBehavior">
      <identity>
        <dns value="locahost" />
      </identity>
    </endpoint>
    <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
  </service>
</services>
<bindings>
  <wsHttpBinding>
    <binding name="wsSecurityByTransport">
      <security mode="Transport">
        <transport clientCredentialType="None" />
        <message clientCredentialType="Certificate" />
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

1 Ответ

1 голос
/ 26 марта 2019
<services>   <service name="WcfService.WebServiceOnline" behaviorConfiguration="WebServiceOnline">
    <endpoint binding="wsHttpBinding" bindingName="wsSecurityByTransport" contract="WcfService.IWebServiceForOnline" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />   </service>   <service name="WcfService.RESTService" behaviorConfiguration="WebServiceOnline">
    <endpoint address="" binding="webHttpBinding" contract="WcfService.IRESTService" name="RunningBarbus.Services.RunningBarbusService" behaviorConfiguration="AjaxBehavior">
      <identity>
        <dns value="locahost" />
      </identity>
    </endpoint>
    <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />   </service> </services>

Возможно, проблема в файле конфигурации. Мы могли бы предоставить дополнительную конечную точку службы для wshttpbinding. Вот моя конфигурация, и она работает правильно над Azure.

<system.serviceModel>
    <services>
      <service behaviorConfiguration="mybehavior" name="WcfService1.Service1">
        <!--http, https are all configurated-->
        <endpoint address="" binding="webHttpBinding" contract="WcfService1.IService1" behaviorConfiguration="webbev" bindingConfiguration="mybinding"></endpoint>
        <endpoint address="" binding="webHttpBinding" contract="WcfService1.IService1" behaviorConfiguration="webbev" bindingConfiguration="com"></endpoint>
        <endpoint address="myservice" binding="wsHttpBinding" contract="WcfService1.IService1"></endpoint>
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"></endpoint>
      </service>
    </services>
    <bindings>
      <webHttpBinding>
        <binding name="mybinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" sendTimeout="00:10:00" receiveTimeout="00:10:00">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" />
          <security mode="Transport">
            <transport clientCredentialType="None"></transport>
          </security>
        </binding>
        <binding name="com">
          <security mode="None"></security>
        </binding>
      </webHttpBinding>
</bindings>

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

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