Почему AspNetCompatibilityRequirementsMode.Allowed исправляет эту ошибку?

Я искал вокруг, пытаясь решить проблему с WCF. Я очень новичок в WCF, поэтому я не был уверен, что именно происходит.

Я использую Visual Studio 2010 и сделал новый веб-сайт-> WCF Service. Я создал свой сервис и в файле конфигурации, если я установилaspNetCompatibilityEnabled="true"Я бы получил эту ошибку при переходе на службу через мой веб-браузер.

The service cannot be activated because it does not support ASP.NET compatibility.
ASP.NET compatibility is enabled for this application. Turn off ASP.NET compatibility mode in the web.config
or add the AspNetCompatibilityRequirements attribute to the service type with RequirementsMode 
setting as 'Allowed' or 'Required'.

Я не понимаю, что это значит. ПочемуaspNetCompatibilityEnabled="true" вызвать эту ошибку, когда[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)] исправляет это.

Для меня они звучат так, как будто они делают то же самое. Кроме того, без этого атрибута silverlight не смог вызвать мои методы WCF. Почему это?

Вот мой файл конфигурации, если это необходимо:

<?xml version="1.0"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <customErrors mode="Off"/>
  </system.web>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="LargeBuffer" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" />
      </basicHttpBinding>
    </bindings>
    <services>
      <service name="Services.Exporter">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="LargeBuffer"
          contract="Services.IExporter" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment
      multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

Итак, мой вопрос: почему добавление атрибута совместимости исправляет это? Кроме того, почему это было необходимо для Silverlight?

Ответы на вопрос(1)

Ваш ответ на вопрос