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.