Comment faire pour activer la compression IIS pour les services WCF?
J'utilise actuellement une coutume gzip codeur pour mon service WCF. Je veux le remplacer par le haut-IIS 7 compression si c'est possible. Je ne peux pas trouver d'info en ligne sur la façon de que.
Est-il possible de l'activer IIS 7 de compression pour les services WCF?
Savez-vous si cela sera pris en charge hors de la boîte .Net 4?
Modifier le 15 juin: je suis toujours à la recherche d'un moyen de remplacer notre coutume gzip codeur avec une approche la plus répandue de sorte que si vous savez comment le faire avec vous .Net 4 et IIS 7, s'il vous plaît répondre à cette question.
Grâce
Encadré : Ma tentative de le faire manuellement
Puisque je ne peux pas trouver comment le faire: il suffit de tourner quelques boutons, j'ai décidé de l'essayer et de l'activer manuellement.
Pour l'instant j'ai:
- Installé et activé le IIS 7 de la Compression Dynamique Module
- Changé la section de la applicationHost.fichier de configuration pour activer la compression pour
mimeType="application/soap+xml"
etmimeType="application/xop+xml"
.
J'ai utilisé un HTTP sniffer pour renifler le trafic envoyé à partir de mon application (Windows Forms). Je vois que les demandes n'ont pas le Accept-Encoding:gzip,deflate
en-tête http.
Donc Je
- Ajoutée manuellement à tous les appels sortants à l'aide de la
OperationContextScope
classe et de sonOutgoingMessageProperties
. (Je vais poster les détails plus tard si je trouve la solution).
Avec http sniffer, je peux voir que le client l'en-tête a maintenant le bon en-tête:
POST /### path to my service ####/MyService.svc HTTP/1.1
MIME-Version: 1.0
Content-Type: multipart/related; type="application/xop+xml";
start="<http://tempuri.org/0>";
boundary="uuid:####### some uuid #############";
start-info="application/soap+xml"
Accept-Encoding: gzip,deflate
Host: ####### my server name #############
Content-Length: 1753
Expect: 100-continue
Mais la réponse du serveur n'est toujours pas compressé.
Pourquoi la réponse du serveur non compressé? Ai-je utilisé le bon type mime? Une fois que je reçois le serveur renvoie un comprimé de réponse, le client aura automatiquement le décompresser ou auront à écrire de code côté client pour décompresser?
Merci pour votre aide
OriginalL'auteur Sylvain | 2009-11-14
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème; .pages aspx ont été compressées, mais WCF contenu n'était pas. Il a à voir avec le type de contenu retourné par le service WCF, qui a été annexée à la mime-type.
Je l'ai eu à travailler avec la section suivante dans le ApplicationHost.config:
Voici ce que j'ai fait (et pour la plupart les mêmes étapes comme déjà mentionné):
Que j'ai senti que le codage du jeu de caractères ne doit pas être de déterminer si la compression fonctionne ou pas, j'ai fini par laisser IIS compresser l'ensemble de l'application/* types de contenu.
c:\windows\system32\inetsrv\config\applicationHost.config
OriginalL'auteur Arjan van der Meer
Peut-être que cela dépend de la WCF service d'installation que vous utilisez, mais pour les applications que j'ai utilisé dans (tous ont un accès mixte pour les deux .NET applications et Silverlight pages), à la génération de la WCF client de classe contenait une EnableDecompression propriété qui peut être définie sur true. Après que mon Winforms applications envoient les bons en-têtes et le webservice de communication est correctement compressé.
OriginalL'auteur David Hay
Il semble que vous pouvez activer la Compression Dynamique dans IIS via l'interface utilisateur ou de la CLI.
Cet article vous montre deux façons:
http://www.hanselman.com/blog/EnablingDynamicCompressionGzipDeflateForWCFDataFeedsODataAndOtherCustomServicesInIIS7.aspx
J'ai trouvé l'interface graphique facile. L'article vous montre comment faire pour vérifier qu'il fonctionne avec un violon.
Cheers!
OriginalL'auteur Colin
C'est utile pour IIS 6
http://ramon.bloggingabout.net/2008/11/06/wcf-and-http-gzipdeflate-compression-and-silverlight/
(mise à jour de l'URL)
C'est un mort de produit 😉
OriginalL'auteur Simon_Weaver