IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Communication Foundation .NET Discussion :

[Webservice] Module http


Sujet :

Windows Communication Foundation .NET

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 319
    Par défaut [Webservice] Module http
    Bonjour,

    Sous VS2010, framework 3.5, j'ai réalisé un workflow qui fonctionne en tant que webservice.

    Lorsque je le test "manuellement" et en local par browser, tout se passe bien. Le module http personnalisé (que j'appelle "WorkflowWSCorrelation") fonctionne, et lors de l'event "PreRequestHandlerExecute", ma varible privée de classe "HttpApplication" contient bien le paramètre rentré pour le "Request" (soit lors de l'appel de la méthode quelle qu'elle soit).

    Par contre, lorsque je réalise un second projet qui inclut la référence au webservice, lors des appels au webservice, le paramètre rentré pour le "Request" n'est plus trouvable ...

    Voici un bout de code du Main du second projet pour mieux expliquer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    static void Main(string[] args)
            {
                string resultatString;
                string Id1 = "123";
     
                Console.WriteLine("Début de la connection au webservice ...");
                Workflow1_WebServiceSoapClient wsConnection = new Workflow1_WebServiceSoapClient();
     
                wsConnection.Open();
                Console.WriteLine("Connection réalisée.");
     
                resultatString = wsConnection.InitWF(Id1);
                Console.WriteLine("Id " + Id1 + " : " +resultatString);
     
                resultatString = wsConnection.T1versT2(Id1);
                Console.WriteLine("Id " + Id1 + " : " + resultatString);
     
                wsConnection.Close();
                Console.Read();
            }
    Par exemple, lors de l'appel de la méthode "T1versT2", ma variable privée de classe "HttpApplication" ne contient plus le paramètre rentré lors de l'appel de la méthode ... alors que la méthode renvoie le bon résultat dans le Main et fonctionne donc ...

    Cela pourrait être un problème de endpoint, mais je ne suis pas sûr si ce dernier est configuré correctement ni si c'est à cause de ça.

    Ci-dessous un extrait de mon web.config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <configuration>
      <configSections>
        <section name="WorkflowRuntime" type="System.Workflow.Runtime.Configuration.WorkflowRuntimeSection, System.Workflow.Runtime, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      </configSections>
     
      <WorkflowRuntime Name="WorkflowServiceContainer">
        <Services>
          <add type="System.Workflow.Runtime.Hosting.ManualWorkflowSchedulerService, System.Workflow.Runtime, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
          <add type="DemoWF.OracleWorkflowPersistenceService2, DemoWF, Version=3.0.0.0, Culture=neutral" UnloadOnIdle="true" LoadIntervalSeconds="15"/>
        </Services>
      </WorkflowRuntime>
     
      <system.serviceModel>
     
        <client>
          <endpoint name="DemoWF.InterfaceContractWF"
                    address="http://localhost:1816/DemoWF_WebService/DemoWF.Workflow1_WebService.asmx"
                    binding="wsDualHttpBinding"
                    contract="DemoWF.InterfaceContractWF">
          </endpoint>
        </client>
     
        <services>
          <service
              name="DemoWF.InterfaceContractWF">
            <endpoint address="http://localhost:1816/DemoWF_WebService/DemoWF.Workflow1_WebService.asmx"
                      binding="wsDualHttpBinding"
                      contract="DemoWF.InterfaceContractWF">
            </endpoint>
          </service>
        </services>
     
      </system.serviceModel>
     
      <system.web>
        <compilation debug="true">
          <assemblies>
            [...]
          </assemblies>
        </compilation>
        <authentication mode="Windows"/>
        <httpModules>
          <add type="DemoWF.WorkflowWSCorrelation, DemoWF, Version=3.0.0.0" name="WorkflowHost" />
        </httpModules>
      </system.web>
    </configuration>
    Pour complément d'information, "WorkflowWSCorrelation" permet de corréler l'Id d'entrée à la bonne instance de workflow. Ainsi, l'Id "123" sera associé à une instance différente de "345" et les deux évolueront indépendamment.

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Utilise un outils de traces pour comparer les messages échanger.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 319
    Par défaut
    Etant assez nouveau sur Visual Studio, je m'excuse d'avance si ma question semble simple ... mais de quel genre d'outil de trace parlez-vous ?

    Car si j'arrive à mettre un point d'arrêt (et à suivre pas à pas) dans mon module Http personnalisé, la variable associée à la requête ne contient rien en paramètre d'entrée. De plus, le webservice n'est pas réalisé manuellement mais par le biais du GUI de workflow : les points d'arrêts semblent ne pas fonctionner lorsque je les mets sur le graphique.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 319
    Par défaut
    Bon, après quelques essais, j'ai pu constaté que je passe bien dans l'event "PreRequest" de mon module HTTP, même si au premier appel il ne s'arrête jamais sur le point d'arrêt bizarrement.

    Ceci mis de côté, j'ai l'impression que c'est l'application invoquant le WS qui est la cause de l'absence de paramètre : ma variable "currentApplication" de type HttpApplication ne contient rien d'utilisable dans son champ "Request" puisque la console n'est pas vraiment une application Web.
    J'ai pu trouvé cependant dans le champ "InputStream" de "Request" (c'est-à-dire "this.currentApplication.Request.InputStream") la forme SOAP de la requête transmise.

    Je pense donc récupérer le message SOAP par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    StreamReader sr = new System.IO.StreamReader(this.currentApplication.Request.InputStream);
    string inputStream = sr.ReadToEnd();
    Cependant la dernière commande cause l'erreur "400 Bad Request" lors de l'appel du WS, alors qu'en débogguage cela ne me pose aucun souci.

  5. #5
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Citation Envoyé par vampirella Voir le message
    Etant assez nouveau sur Visual Studio, je m'excuse d'avance si ma question semble simple ... mais de quel genre d'outil de trace parlez-vous ?
    Par exemple AppFabrique.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 319
    Par défaut
    Merci Laurent de m'avoir répondu, même si j'ai l'impression que vous avez sauté mon dernier message.

    Au final j'ai trouvé plus simple 5ou en tout cas plus effectif) de développer mon webservice "à la main" et d'y inclure le WorkflowRuntime.

    La gestion des workflows et de leurs instances s'en retrouvent de toute façon amélioré à mes yeux, au final.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Acces à un webservice en HTTPS
    Par Gatsu35 dans le forum Flex
    Réponses: 0
    Dernier message: 15/11/2008, 14h36
  2. [Delphi7] Exemple webservices vers HTTPS
    Par serge0934 dans le forum Web & réseau
    Réponses: 4
    Dernier message: 02/03/2008, 20h18
  3. [Tomcat] Webservice over HTTPS
    Par encom79 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 24/01/2007, 09h56
  4. [Tomcat] Webservice over HTTPS
    Par encom79 dans le forum Services Web
    Réponses: 0
    Dernier message: 22/01/2007, 17h11
  5. PB d'installation du module HTTPS
    Par nono08 dans le forum Web
    Réponses: 5
    Dernier message: 19/12/2005, 20h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo