Предоставить веб-сервис WCF в конфигурации Интернета - PullRequest
1 голос
/ 30 января 2012

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

Веб-сервис размещен внутри по адресу https://ourportal.internaldomain.intra:9011/FrontEndWS и работает хорошо. Мы выставили веб-сервис на https://www.internetdomain.com.mt/FrontEndWS, однако при доступе к нему с внешнего адреса мыльные URL-адреса все еще ссылаются на внутренний адрес.

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

<bindings>
 <basicHttpBinding>
   <binding name="LargeMessagingBinding" maxBufferSize="99999900" maxBufferPoolSize="524288000" maxReceivedMessageSize="99999900">
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="99999900" maxBytesPerRead="99999900" maxNameTableCharCount="2147483647" />
     <security>
       <transport clientCredentialType="Basic" />
     </security>
   </binding>
 </basicHttpBinding>
</bindings>
<behaviors>
 <serviceBehaviors>
   <behavior name="ServiceBehaviour">
     <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"  />
     <serviceDebug includeExceptionDetailInFaults="true" />
     <dataContractSerializer maxItemsInObjectGraph="6553600" />
   </behavior>
 </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="false" />

Ответы [ 2 ]

0 голосов
/ 25 февраля 2012

У меня была та же проблема, и теперь я понял, что это из-за загрузчика SSL, который был расположен напротив веб-сервера. Проверьте с вашей группой администраторов. Мы избавились от SSL Offloader, так как нам пришлось создать сервис. Вы можете обратиться к ссылкам ниже

http://blogs.msdn.com/b/distributedservices/archive/2010/06/01/ssl-offloader-using-wcf-4-0-routing-service.aspx

http://blogs.msdn.com/b/distributedservices/archive/2010/05/13/wcf-and-intermediate-devices.aspx

Также добавьте заголовок хоста для https

http://www.sslshopper.com/article-ssl-host-headers-in-iis-7.html

0 голосов
/ 30 января 2012

Для того, чтобы представить ваш веб-сервис внешнему миру, вы должны иметь службу WCF в виртуальном каталоге на веб-сайте IIS.

Теперь ваш URL "www.internetdomain.com.nt" будет привязан к определенному IP-адресу (внешнему доступу), и этот IP-адрес - это IP-адреса вашего сервера, на которых работает служба WCF.

Любой запрос по этому IP-адресу поступает в IIS и определяет способ его обработки.

Если вышеприведенное хорошо, то URL для вашей службы WCF будет:

http://www.internetdomain.com.nt/virtualdirectory/FrontEndWS
https://www.internetdomain.com.nt/virtualdirectory/FrontEndWS

В случае https на вашем веб-сайте порт 443 https будет сопоставлен с помощью опции Edit Bindings и указан сертификат службы, который он должен использовать.

Также вам нужно определить свою службу с конечной точкой в ​​web.config. Пример показан ниже:

<bindings>
 <basicHttpBinding>
   <binding name="LargeMessagingBinding" maxBufferSize="99999900" maxBufferPoolSize="524288000" maxReceivedMessageSize="99999900">
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="99999900" maxBytesPerRead="99999900" maxNameTableCharCount="2147483647" />
     <security>
       <transport clientCredentialType="Basic" />
     </security>
   </binding>
 </basicHttpBinding>
</bindings>
<services>
      <service name="SampleWCFService.Service1" behaviorConfiguration="default">
        <endpoint address="" behaviorConfiguration="ServiceBehaviour" binding="basicHttpBinding" bindingConfiguration="LargeMessageBinding" contract="SampleWCFService.IService1"/>
      </service>
</services>
<behaviors>
 <serviceBehaviors>
   <behavior name="ServiceBehaviour">
     <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"  />
     <serviceDebug includeExceptionDetailInFaults="true" />
     <dataContractSerializer maxItemsInObjectGraph="6553600" />
   </behavior>
 </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="false" />

Проверьте элемент services в вышеуказанной конфигурации. Убедитесь, что пространство имен службы указано правильно.

...