Невозможно добавить службу WCF, размещенную в azure - PullRequest
0 голосов
/ 13 января 2020

Я разместил одну службу WCF на сервере

http://firstdomain.com/WebStorePrice/PickStorePrice.svc

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

Произошла ошибка при загрузке метаданных * https://service.azurewebsites.net/PickStorePrice.svc/ $. Запрос не выполнен с состоянием HTTP 404: не найдено. Метаданные содержат ссылку, которая не может быть разрешена: 'https://service.azurewebsites.net/PickStorePrice.svc'. Конечная точка не прослушивала https://service.azurewebsites.net/PickStorePrice.svc, которая могла бы принять сообщение. Это часто вызвано неправильным адресом или действием SOAP. См. InnerException, если имеется, для более подробной информации. Удаленный сервер возвратил ошибку: (404) Not Found. Если служба определена в текущем решении, попробуйте создать решение и снова добавить ссылку на службу. webconfig службы wcf выглядит как

      <system.serviceModel>
        <services>
          <service name="WebStorePrice.PickStorePrice" behaviorConfiguration="cstmServiceConfig">
            <endpoint address="" binding="basicHttpBinding" contract="WebStorePrice.IPickStorePrice"/>
          </service>
        </services>
        <bindings>
          <webHttpBinding>
            <binding name="secure">
              <security mode="Transport">
                <transport clientCredentialType="Basic"/>
              </security>
            </binding>
          </webHttpBinding>
        </bindings>
        <behaviors>
          <endpointBehaviors>
            <behavior name="cstmendpointConfig">
              <webHttp/>
            </behavior>
          </endpointBehaviors>
          <serviceBehaviors>
            <behavior name="cstmServiceConfigOnline">
              <serviceMetadata httpGetEnabled="true"/>
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
            <behavior name="cstmServiceConfig">
              <serviceMetadata httpGetEnabled="true"/>
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true"/>
      </system.serviceModel>

1 Ответ

0 голосов
/ 20 января 2020

Из конфигурации службы наш сервис не поддерживает протокол Https, поскольку сервер Azure docker (Paas) по умолчанию связывается через Https. Поэтому нам следует настроить дополнительную конечную точку службы для поддержки WCF через https.
Для веб-службы в стиле Soap см. Приведенную ниже конфигурацию.

  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https"/>
      <add binding="basicHttpBinding" scheme="http"/>
    </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

В отношении службы стиля WCF Restful.

  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior>
          <webHttp />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <bindings>
      <webHttpBinding>
        <binding name="mybinding">
          <security mode="Transport">
            <transport clientCredentialType="None"></transport>
          </security>
        </binding>
      </webHttpBinding>
    </bindings>
    <protocolMapping>
      <add binding="webHttpBinding" scheme="http"/>
      <add binding="webHttpBinding" scheme="https" bindingConfiguration="mybinding"/>
    </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

Не стесняйтесь сообщить мне, если проблема все еще существует.

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