2010-12-10 22 views
0

J'ai une application silverlight qui utilise WCF en interrogeant Duplex et les appels asynchrones "normaux". tout fonctionnait bien, jusqu'à ce que j'ajoute un fichier global.asax.Comment un nouveau fichier global.asax peut-il gâcher mon service WCF?

Après une heure de googling, je suis tombé sur ce blog plutôt daté par Jean-Dirk Stuart qui suggérait de commenter l'événement Session_start stubbed.

Assez sûr que corrigé le problème, mais il soulève une préoccupation. Pourquoi ce membre apparemment bénin du fichier global.asax casse les appels wcf.

Répondre

2

Oui, c'est un problème peu connu mais ennuyeux. Le problème se résume à l'activation de l'état de la session une fois que vous avez ajouté un fichier global.asax à votre projet Web. Une fois l'état de session activé, le serveur n'exécutera les appels que de manière séquentielle. Voici deux articles avec des informations plus approfondies:

http://blogs.msdn.com/b/silverlightws/archive/2009/09/30/having-a-pollingduplex-service-and-any-other-wcf-service-in-the-same-website-causes-silverlight-calls-to-be-slow.aspx

http://weblogs.asp.net/olakarlsson/archive/2010/05/20/simultaneously-calling-multiple-methods-on-a-wcf-service-from-silverlight.aspx

Ce problème se produit uniquement lors de l'utilisation de la pile réseau navigateur, vos options sont:

  1. séance Désactiver état dans votre projet Web ou
  2. Utilisation de la pile de mise en réseau client

Hope this helps ...

Chris

+0

Très intéressant. Je n'ai pas besoin de l'état de la session, mais j'ai besoin de bobiner un thread d'arrière-plan pour surveiller une file d'attente d'événements et envoyer des messages aux clients SL via le mode duplex. Je m'attendais à utiliser l'événement Global.asax application_start pour y arriver. Peut-être qu'il y a un meilleur moyen? –

0

Il existe certains types de liaison qui prennent en charge l'accès aux données de session asp.net, je ne vois vraiment pas comment cela affecterait si WCF essaye de se connecter à l'événement session_start comme un module http. Vous pouvez également utiliser le réflecteur pour désassembler le code où vous avez reçu l'exception.

+0

C'est le point, je pense que ... si vous ajoutez global.asax et/ou définissez votre service WCF en mode de compatibilité asp.net, WCF appelle déclencheur session_start (etc) – Kir