Configuration WCF Enfer?

Je déteste WCF installation avec des points de terminaison, les comportements, etc. Je crois que toutes ces choses doivent être effectués automatiquement. Tout ce que je veux faire est de retour JSON résultat de mon service WCF. Voici ma configuration:

<system.serviceModel>
<bindings>
  <webHttpBinding>
    <binding name="default"/>
  </webHttpBinding>
</bindings>
<services>
  <service name="HighOnCodingWebApps.ZombieService"
     behaviorConfiguration="MyServiceTypeBehaviors">
    <endpoint address="" binding="webHttpBinding"
      bindingConfiguration="default"
      contract="HighOnCodingWebApps.IZombieService"
      behaviorConfiguration="webScriptEnablingBehavior"/>
  </service>
</services>

<behaviors>
  <endpointBehaviors>
    <behavior name="webScriptEnablingBehavior">
      <enableWebScript/>
    </behavior>
  </endpointBehaviors>

  <serviceBehaviors>
    <behavior name="MyServiceTypeBehaviors">
      <serviceMetadata httpGetEnabled="true"/>


    </behavior>
  </serviceBehaviors>
</behaviors>

<serviceHostingEnvironment aspNetCompatibilityEnabled="false"/>

Et j'ai le service suivant la mise en œuvre:

public class ZombieService : IZombieService
    {
        [WebInvoke(Method = "GET",
                    ResponseFormat = WebMessageFormat.Json,
                    UriTemplate = "KnownZombies")]
        public Zombie GetZombie()
        {
           return new Zombie() { Name = "Mohammad Azam"};
        }
    }

    public class Zombie
    {
        public string Name { get; set; }
    }

Lorsque je visite http://localhost:22059/ZombieService/KnownZombies dit le message suivant:

Postes clients à l'aide de "UriTemplate' ne peut pas être utilisé avec le Système de la.ServiceModel.Description.WebScriptEnablingBehavior'.

Si je supprime le WebScriptEnablingBehavior à partir du web.config j'obtiens l'erreur suivante:

Le message avec Pour
'http://localhost:22059/ZombieService.svc/KnownZombies" ne peut pas être
traitées au niveau du récepteur, en raison d'une AddressFilter inadéquation à l'
EndpointDispatcher. Vérifiez que l'émetteur et du récepteur
EndpointAddresses d'accord.

Mise à JOUR 1:

J'ai mis à jour la configuration de ce:

 <system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="default"/>
      </webHttpBinding>
    </bindings>
    <services>
      <service name="HighOnCodingWebApps.ZombieService"
         behaviorConfiguration="MyServiceTypeBehaviors">
        <endpoint address="http://localhost:22059/ZombieService.svc" binding="webHttpBinding"
          bindingConfiguration="default"
          contract="HighOnCodingWebApps.IZombieService"
          />
      </service>
    </services>

    <behaviors>
      <endpointBehaviors>
        <behavior name="SomeBehavior">
          <webHttp />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="MyServiceTypeBehaviors">

          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>

Maintenant quand je visite http://localhost:22059/ZombieService.svc/KnownZombies je reçois le message suivant dans le navigateur:

Le message avec Pour
'http://localhost:22059/ZombieService.svc/KnownZombies" ne peut pas être
traitées au niveau du récepteur, en raison d'une AddressFilter inadéquation à l'
EndpointDispatcher. Vérifiez que l'émetteur et du récepteur
EndpointAddresses d'accord.

Ne tirez pas sur quoi que ce soit? Pourriez-vous essayer de poster quelque chose d'utile, et peut-être inclure une question?
Découvrez WCF 4.0 - il a remédié beaucoup de la configuration des maux de tête! Lire Un Développeur Intro à la WCF 4 pour des détails.
mise à jour de la question

OriginalL'auteur azamsharp | 2011-08-11