Я искал, пытаясь решить проблему с 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?