WCF Web.config Ошибка: «Эта коллекция уже содержит адрес со схемой http» - PullRequest
0 голосов
/ 04 апреля 2020

Сначала я попытался добавить приведенный ниже код в web.config

 <system.serviceModel> 
         <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel>

Но не повезло, я все еще получал ту же ошибку.

Затем я попытался добавить приведенный ниже код также в web.config

 <system.serviceModel> 
         <serviceHostingEnvironment> 
              <baseAddressPrefixFilters> 
                   <add prefix="http://www.YourHostedDomainName.com"/> 
              </baseAddressPrefixFilters> 
         </serviceHostingEnvironment> 
    </system.serviceModel>

Но все равно не повезло. Теперь я получаю эту ошибку:

Сообщение об ошибке синтаксического анализатора: ошибка использовать раздел, зарегистрированный как allowDefinition = 'MachineToApplication' за пределами уровня приложения.

Ошибка в исходном файле: D: \ Site \ Website \ service \ web.config Строка: 52

Полный файл web.config

<?xml version="1.0"?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="DESKNET.Public.TEServices.TEAPI" behaviorConfiguration="DESKNET.Public.TEServices.TEAPIBehaviour" >
        <endpoint address="SOAP" binding="basicHttpBinding" bindingConfiguration="ServiceBindingSOAP" contract="DESKNET.Public.TEServices.ITEAPI" ></endpoint>
        <endpoint address="REST" binding="webHttpBinding" bindingConfiguration="ServiceBindingREST" behaviorConfiguration="webHttpBehaviour" contract="DESKNET.Public.TEServices.ITEAPI" ></endpoint>
      </service>
    </services>
    <behaviors>

      <serviceBehaviors>
        <behavior name="DESKNET.Public.TEServices.TEAPIBehaviour">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
          <serviceDebug includeExceptionDetailInFaults="true"/>
          <serviceCredentials>
            <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="DESKNET.Public.TEServices.UserAuthentication, DESKNET"/>
          </serviceCredentials>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="webHttpBehaviour">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <bindings>
      <wsHttpBinding>
        <binding name="ServiceBindingSOAP">
          <security mode="Message">
            <transport clientCredentialType="None"/>
            <message clientCredentialType="UserName" />
          </security>
        </binding>
      </wsHttpBinding>
      <basicHttpBinding>
        <binding name="ServiceBindingSOAP"></binding>
      </basicHttpBinding>
      <webHttpBinding>
        <binding name="ServiceBindingREST">
          <security mode="None"></security>
        <!-- </binding> -->
        <!-- </binding> -->
      </webHttpBinding>
    </bindings>
    <serviceHostingEnvironment>
     <baseAddressPrefixFilters> 
         <add prefix="http://YourHostedDomainName.com"/> 
     </baseAddressPrefixFilters> 
  </serviceHostingEnvironment>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

1 Ответ

0 голосов
/ 13 апреля 2020

Об ошибке, пожалуйста, обратитесь к моему предыдущему ответу, он ничего не имеет с конфигурацией WCF. Кроме того, что-то не так с вашей текущей конфигурацией WCF. Я изменил его, см. Ниже.

<system.serviceModel>
<services>
      <!--replace the name attribute with your service implemented class-->
      <service name="WcfService3.Service1" >
        <!--replace the contract attribute with your service contract-->
        <endpoint address="SOAP" binding="basicHttpBinding" contract="WcfService3.IService1" ></endpoint>
        <endpoint address="REST" binding="webHttpBinding" behaviorConfiguration="webHttpBehaviour" contract="WcfService3.IService1" ></endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="webHttpBehaviour">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
  </system.serviceModel>

Он поддерживает как веб-сервис в стиле Rest, так и в стиле SOAP. Кроме того, вам нужно настроить сертификат для включения пользовательской аутентификации по имени пользователя. Я удалил его в вышеуказанных кодах. Не стесняйтесь, дайте мне знать, если есть что-то, с чем я могу помочь.

...