Служба WCF, размещенная в Autofac для предоставления метаданных с отключенным анонимным доступом - PullRequest
0 голосов
/ 19 июня 2019

Мы успешно используем autofac для размещения наших услуг WCF.У нас есть один сервис, для которого нам нужно предоставить метаданные, однако в IIS 7 анонимная аутентификация не включена. Это работает без AutoFac.

Это прекрасно работает без AutoFAC.Как только мы используем фабрику хостов autofac в файле service.svc:

Вот компонент модели сервиса сервиса:

  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="httpEPBinding" sendTimeout="00:05:00">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="serviceBehaviors" name="WcfEngineAutofac.CalcEngine">
        <endpoint binding="basicHttpBinding" bindingConfiguration="httpEPBinding" name="HttpEP" contract="WcfEngineAutofac.ICalcEngine">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" name="mexHttpEP" contract="IMetadataExchange" listenUriMode="Explicit">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="serviceBehaviors">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>

    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" minFreeMemoryPercentageToActivateService="0" />
  </system.serviceModel> 

Это прекрасно работает без autofac.Как только мы используем фабрику хостов autofac в файле service.svc:

<%@ ServiceHost
Service="WcfEngineAutofac.ICalcEngine"
Factory="Autofac.Integration.Wcf.AutofacServiceHostFactory, Autofac.Integration.Wcf"     %>

, мы получаем следующую ошибку:

The authentication schemes configured on the host ('IntegratedWindowsAuthentication') do not allow those configured on the binding 'BasicHttpBinding' ('Anonymous'). Please ensure that the SecurityMode is set to Transport or TransportCredentialOnly. Additionally, this may be resolved by changing the authentication schemes for this application through the IIS management tool, through the ServiceHost.Authentication.AuthenticationSchemes property, in the application configuration file at the <serviceAuthenticationManager> element, by updating the ClientCredentialType property on the binding, or by adjusting the AuthenticationScheme property on the HttpTransportBindingElement.

Ошибка исчезаеткогда мы включаем анонимную проверку подлинности, а также проверку подлинности Windows в IIS, но нам не разрешают делать это в производстве!

Любые идеи!Я люблю autofac, но не могу использовать его, если мы не можем решить это ...

...