Подтвердить что ты не робот

Ошибка веб-службы WCF: услуга не может быть активирована, поскольку она не поддерживает совместимость с ASP.NET

Я пытаюсь создать спокойный веб-сервис wcf. Когда я пытаюсь подключиться к сервису через клиента, я получаю следующую ошибку:

Служба не может быть активирована, поскольку она не поддерживает совместимость с ASP.NET. Для этого приложения включена совместимость с ASP.NET. Отключите режим совместимости ASP.NET в файле web.config или добавьте атрибут AspNetCompatibilityRequirements к типу службы с параметром RequirementsMode как "Разрешено" или "Обязательно".

У других возникли проблемы, но они исправили это с помощью изменений в их web.config. Я выполнил их исправление, но проблема все же существует. вот мой web.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>
4b9b3361

Ответ 1

В главном сервисе вы можете отметить свою услугу как:

[AspNetCompatibilityRequirements(
        RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

Из http://forums.silverlight.net/t/21944.aspx

Ответ 2

он будет работать:

вы меняете эти строки в коде или добавляете строку в web.config:

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true" /> 
</system.serviceModel>

Ответ 3

Если у кого-то много сервисов и служб создаются с использованием пользовательского 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 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;
    }
}