Я искал, пытаясь решить проблему, с которой я столкнулся с WCF. Я очень новичок в WCF, поэтому не был уверен, что происходит.
Я использую Visual Studio 2010 и New Web Site- > 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?