9
votes

Comment activer la compression IIS pour les services de la WCF?

J'utilise actuellement un codeur GZIP personnalisé pour mon service WCF. Je veux le remplacer par la compression IIS 7 intégrée si cela est possible. Je ne trouve pas d'informations en ligne sur la façon de faire.

Y a-t-il un moyen d'activer la compression IIS 7 pour les services de WCF? Savez-vous si cela sera pris en charge hors de la case avec .NET 4?

Modifier le 15 juin: Je cherche toujours Pour un moyen de remplacer notre codeur GZIP personnalisé avec une approche traditionnelle, donc si vous savez faire cela avec .NET 4 et IIS 7, veuillez répondre à cette question.

Merci


< P> Barre latérale: Ma tentative de le faire manuellement

Comme je ne trouve pas comment le faire en tournant simplement quelques boutons que j'ai décidé d'essayer manuellement. < / p>

jusqu'à présent que j'ai:

  • installé et activé le module de compression dynamique IIS 7
  • a changé la section du fichier applicationHost.config pour activer la compression pour mimeType = "Application / SOAP + xml" et MIMETYPE = "Application / XOP + XML" .

    J'ai utilisé un sniffer http pour renifler le trafic envoyé de mon application (Formulaires Windows). Je vois que les demandes ne possèdent pas le Accepter-coding: gzip, dégonfler HTTP en-tête.

    donc i

    • l'a ajouté manuellement à tous les appels sortants à l'aide du OperationContextscope Classe et son sortaingmessageProperties . (Je posterai les détails plus tard si je trouve la solution).

      avec le sniffer http, je peux voir que l'en-tête du client a maintenant le haut-par-tête correct: xxx

      mais la réponse du serveur n'est toujours pas comprimée.

      Pourquoi la réponse du serveur n'est-elle pas comprimée? Ai-je utilisé les types de mime corrects? Une fois que je reçois le serveur pour renvoyer une réponse compressée, le client le décompressera-t-il automatiquement ou devra écraser le code sur le côté client pour décompresser?


      Merci pour votre aide


1 commentaires

Ma question semble être un duplicata de Stackoverflow. com / questions / 1741768 / ... . Cette question s'applique à IIS 6, mais je pense que la solution fonctionnera ici aussi. Si tel est le cas, je fermerai cette question comme un duplicata.


4 Réponses :


1
votes

Cela dépend peut-être de la configuration de service de WCF spécifique que vous utilisez, mais pour les applications que je l'ai utilisées (tous ont été accessibles à des applications .NET et des pages Silverlight), la classe cliente générée par WCF contenait une propriété enableCompompression qui peut être réglé sur true. Après que mes applications WinForms envoient les en-têtes correctes et que la communication WebService est correctement comprimée.


1 commentaires

Merci pour votre réponse. Mon client CLIENT est une application de base WinForms afin que je puisse être capable d'utiliser enableCompression. Votre réponse implique que vous ayez activé avec succès la compression sur le serveur. Était-ce sur IIS 7? Comment l'avez-vous configuré? Une idée de la raison pour laquelle je ne peux pas obtenir le serveur de retourner les réponses comprimées?



1
votes

1 commentaires

C'est un produit mort ;-)



9
votes

J'ai eu le même problème; Les pages .aspx ont été comprimées mais le contenu de la WCF n'était pas. Cela concerne le type de contenu renvoyé par le service WCF, qui a été ajouté au type MIME.

Je l'ai eu pour fonctionner avec la section suivante dans l'applicationHost.config: p>

<add mimeType="application/xml; charset=utf-8" enabled="true" />
  • Installez le service de rôle de compression dynamique pour le rôle IIS LI>
  • Activez la compression de contenu dynamique pour le site Web que vous utilisez pour héberger le service WCF LI>
  • Open% Systemroot% \ System32 \ inetsrv \ config \ applicyhost.config et ajoutez le type de contenu correspondant à la section du Li>
  • Après cela, il n'a toujours pas fonctionné. li>
  • J'ai vérifié les données avec Firefox 'TAMPER Data et remarquée que le type de contenu renvoyé était en réalité "Application / XML; Charset = UTF-8". LI>
  • Après avoir ajouté le type de contenu fort> complet strong>, y compris le "; charset = uf-8" à la section, il a fonctionné: LI> ul> xxx pré>

    Comme je l'ai senti que l'encodage du jeu de caractères ne doit pas déterminer si la compression fonctionne ou non, j'ai fini par laisser IIS compresse toutes les types de contenu d'application / *. p> p>


1 commentaires

Rappel: Faites d'abord la sauvegarde. Fichier est c: \ windows \ system32 \ inetsrv \ config \ applicyhost.config



1
votes

Il semble que vous puissiez activer la compression dynamique dans IIS via l'interface graphique ou CLI.

Cet article vous montre les deux sens:

http://www.haselman.com/blog/enablingdynamicCompressionGzipdeflateForWCFDatafeedSodaAntherCutMervicestinis7.aspx < / p>

J'ai trouvé l'interface graphique facile. L'article vous montre comment confirmer qu'il fonctionne avec Fiddler.

acclamations!


0 commentaires