Ошибка веб-службы WCF: служба не может быть активирована, поскольку она не поддерживает ASP.NET совместимость
Я пытаюсь создать веб-службу restful wcf. Когда я пытаюсь подключиться к службе через клиент, я получаю следующее сообщение об ошибке:
служба не может быть активирована, так как она не поддерживает ASP.NET совместимость. ASP.NET совместимость включена для этого приложения. Выключить ASP.NET режим совместимости в сети.сконфигурируйте или добавьте атрибут AspNetCompatibilityRequirements к типу службы с параметром RequirementsMode как "Разрешено" или "требуется".
у других были проблемы, но они исправили это через изменения в своей сети.конфиг. Я реализовал их исправление, но все же проблема существует. вот моя паутина.config:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="WebBehavior" >
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="MyServiceBehavior" name="myfirstwcf">
<endpoint address="ws" binding="basicHttpBinding"
contract="Imyfirstwcf" />
<endpoint address="ws2" binding="wsHttpBinding"
contract="Imyfirstwcf" />
<endpoint address="" behaviorConfiguration="WebBehavior"
binding="webHttpBinding"
contract="Imyfirstwcf" />
<endpoint address="mex" binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<serviceHostingEnvironment aspNetCompatibilityEnabled= "true"
multipleSiteBindingsEnabled="true" />
</system.serviceModel>
4 ответов:
на вашем основном сервисе вы можете отметить свой сервис как:
[AspNetCompatibilityRequirements( RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
он будет работать :
вы должны изменить эту строку в коде или добавить строку в web.config:
<system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true" /> </system.serviceModel>
если у кого-то есть много сервисов и услуг создаются с помощью пользовательских
ServiceHostFactory, потомAspNetCompatibilityRequirementsAttributeтакже может быть установлен вCreateServiceHostметод.пример:
public class HostFactory : ServiceHostFactory { protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses) { var host = new ServiceHost(serviceType, baseAddresses); //other relevent code to configure host's end point etc if (host.Description.Behaviors.Contains(typeof(AspNetCompatibilityRequirementsAttribute))) { var compatibilityRequirementsAttribute = host.Description.Behaviors[typeof(AspNetCompatibilityRequirementsAttribute)] as AspNetCompatibilityRequirementsAttribute; compatibilityRequirementsAttribute.RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed; } else { host.Description.Behaviors.Add(new AspNetCompatibilityRequirementsAttribute() { RequirementsMode =AspNetCompatibilityRequirementsMode.Allowed}); } return host; } }
на самом деле, согласно последней документации, вам нужно сделать 2 вещи,
1.Для вашего класса обслуживания:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] [ServiceBehavior(Namespace = "url")] public class Service : IService { }2.Для паутины.конфигурации
<system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
Comments