2010-12-15 4 views
0

J'ai un service WCF qui parle à MSMQ. Lorsque je lance le service dans l'interface client de test de service de VS2010, il peut placer les messages dans les files d'attente appropriées et tout va bien. Lorsque j'héberge le service WCF dans IIS7 et que j'appelle le service depuis mon application Web, tous les messages sont placés dans la file d'attente de lettres mortes Transactional.Hébergement WCF et MSMQ dans les problèmes IIS

Je configure le pool d'applications et le site (le site hébergeant le service WCF) avec des identités dont je connais l'accès spécifique aux files d'attente.

Y at-il autre chose que je peux vérifier ou que je fais mal?

Mise à jour: Eh bien, je pense qu'il se passe quelque chose d'autre. J'ai créé un service SUPER simple qui peut lire et écrire à partir des files d'attente sans échec. J'ai besoin de creuser plus profond et de découvrir. Merci à tous ceux qui ont l'air, mais je vais garder cela ouvert afin que je puisse faire rapport ou si quelqu'un peut avoir d'autres idées. Je sais qu'il est difficile de déterminer sans regarder n'importe quel code, mais il est difficile de poster parce que j'ai beaucoup à casser.

+0

Il serait utile que la configuration est expliquée. Par exemple, le MSMQ est-il local à la machine sur laquelle le WCF est hébergé? Si non, quel MSMQ a les messages en lettre morte? –

+0

Oui, le service WCF se trouve sur la même machine que MSMQ. J'ai spécifié la file d'attente des lettres mortes transactionnelles comme les files d'attente où vont les messages. les files d'attente sont configurées comme non transactionnelles et les messages sont configurés pour être non transactionnels. – DDiVita

+0

Quel genre de nommage est utilisé pour nommer la file d'attente dans le code? Pourriez-vous poster cela (masquer le nom réel avec quelque chose de générique mais garder le format exact). La description du problème indique que la file d'attente est traitée comme une file d'attente distante et que MSMQ ne parvient pas à trouver la file d'attente distante et à livrer le message dans la file d'attente de lettres mortes transactionnelles. –

Répondre

0

Il s'avère que les gars qui ont codé la file d'attente n'ont pas correctement configuré les files d'attente.

0

Définissez ExactlyOnce = false dans le code ou dans votre fichier client app.config.

comme celui-ci

NetMsmqBinding binding = new NetMsmqBinding(NetMsmqSecurityMode.None); 
binding.ExactlyOnce = false; 

Espérons que cela va résoudre le problème.

Vive Naushad