Нужны настройки WCF через http - PullRequest
0 голосов
/ 04 апреля 2010

В настоящее время у нас есть служба WCF, которая работает по протоколу https. Но мы хотим изменить его, чтобы он работал только через http.

Может ли кто-нибудь сказать мне, что нужно изменить, чтобы служба wcf работала через http. Ниже приведены мои значения файла конфигурации. Есть ли что-то еще, что мне нужно изменить, кроме web.config ??

Любая помощь с благодарностью

<system.serviceModel>
   <serviceHostingEnvironment>
      <baseAddressPrefixFilters>
        <add prefix="myservername" />
      </baseAddressPrefixFilters>
    </serviceHostingEnvironment>
    <bindings>
      <basicHttpBinding>
          <binding name="basicHttpBinding_Windows" 
              maxReceivedMessageSize="500000000"  maxBufferPoolSize="500000000" 
              messageEncoding="Mtom">
              <security mode="TransportWithMessageCredential">
                 <transport clientCredentialType="Windows" />
              </security>
              <readerQuotas maxDepth="500000000"
                 maxArrayLength="500000000" maxBytesPerRead="500000000"
                 maxNameTableCharCount="500000000" maxStringContentLength="500000000"/>
          </binding>
      </basicHttpBinding>
    </bindings>
    <behaviors>
       <endpointBehaviors>
         <behavior name="myproject_Behavior">
            <dataContractSerializer />
            <synchronousReceive />
         </behavior>
       </endpointBehaviors>
       <serviceBehaviors>
          <behavior name="WebService.WSBehavior">
             <serviceMetadata httpsGetEnabled="true" />
             <serviceDebug includeExceptionDetailInFaults="true" />
          </behavior>
          <behavior name="WebService.Forms_WSBehavior">
              <serviceMetadata httpGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="false" />
          </behavior>
       </serviceBehaviors>
    </behaviors>
    <services>
       <service behaviorConfiguration="WebService.WSBehavior"
                name="IMMSWebService.mywebservice_WS">
           <endpoint 
               address="myproject_WS" 
               binding="basicHttpBinding" 
               bindingConfiguration="basicHttpBinding_Windows"
               bindingName="basicHttpBinding" 
               contract="WebService.ICommand">
               <identity>
                  <dns value="localhost" />
               </identity>
           </endpoint>
           <endpoint address="mex" 
                     binding="mexHttpsBinding" 
                     contract="IMetadataExchange" />
           <host>
              <timeouts closeTimeout="00:10:00" openTimeout="00:10:00" />
           </host>
       </service>
       <service behaviorConfiguration="WebService.Forms_WSBehavior"
                name="WebService.Forms_WS">
           <endpoint 
                address="" 
                binding="wsHttpBinding" 
                contract="WebService.IForms_WS">
                <identity>
                   <dns value="localhost" />
                </identity>
           </endpoint>
           <endpoint address="mex" 
                     binding="mexHttpBinding" 
                     contract="IMetadataExchange" />
       </service>
    </services>
  </system.serviceModel>

Ответы [ 3 ]

0 голосов
/ 04 апреля 2010

Я изменил свой конфигурационный файл на NOne, и когда я пытаюсь получить доступ к сервису из IE, я получаю эту ошибку Не могу найти базовый адрес, который соответствует схеме http для конечной точки с привязкой basicHttpBinding. Схемы зарегистрированных базовых адресов: [https]. Любая помощь о том, что делать дальше в этом

0 голосов
/ 05 апреля 2010

Для вашей второй проблемы с базовыми адресами: создайте элемент <baseAddresses> в теге службы:

<services>
  <service behaviorConfiguration="WebService.WSBehavior"
    name="IMMSWebService.mywebservice_WS">
    <endpoint 
        address="myproject_WS" 
        binding="basicHttpBinding" 
        bindingConfiguration="basicHttpBinding_Windows"
        bindingName="basicHttpBinding" 
        contract="WebService.ICommand">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
    <host>
      <baseAddresses> 
         <add baseAddress="http://yourserver:8181/YourServiceBase" />
      </baseAddresses>
      <timeouts closeTimeout="00:10:00" openTimeout="00:10:00" />
    </host>
  </service>

или используйте полные адреса на ваших конечных точках

<services>
  <service behaviorConfiguration="WebService.WSBehavior"
    name="IMMSWebService.mywebservice_WS">
    <endpoint 
        address="http://yourserver:8181/YourServiceBase/myproject_WS" 
        binding="basicHttpBinding" 
        bindingConfiguration="basicHttpBinding_Windows"
        bindingName="basicHttpBinding" 
        contract="WebService.ICommand">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
    <host>
      <timeouts closeTimeout="00:10:00" openTimeout="00:10:00" />
    </host>
  </service>
0 голосов
/ 04 апреля 2010

Изменение

  <security mode="TransportWithMessageCredential">

К

  <security mode="None">

Также изменить

<endpoint address="mex" 
                 binding="mexHttpsBinding" 
                 contract="IMetadataExchange" />

до

  <endpoint address="mex"
              binding="mexHttpBinding"
              contract="IMetadataExchange" />

и, наконец, любое появление

httpsGetEnabled для httpGetEnabled

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