Hello,
I am getting the following error when trying to start the work flow runtime hosted in a windows service...
Service cannot be started. System.InvalidOperationException: An instance of ExternalDataExchangeService of type TWTC.WF.WFServiceInterfaces.ITaskServiceAbstract already exists in the runtime container.
Here is my scenario
- I need to run different, long running work flow versions side by side.
- I have strong named assemblies, all loaded in the GAC.
- I have the assemblies broken out by project function - data access layer, work flow, custom activities, data types, work flow local services, etc.
- Currently loaded in the GAC are ver 1.0.0.0 of the assemblies.
- I just added several 1.0.0.1 version of the assemblies and modified the app.config file to load the 1.0.0.1 as well as the 1.0.0.0 versions. See appconfig section below.
- I am using xaml activation based off a custom workflow class.
- I only start wf runtime 1x upon service startup.
Notes...
Questions...
- Is it true that you cannot version local workflow services Or am I missing something
- If I am correct - any plans in future workflow foundation releases to support local service versioning
- Where can I get a list of planned releases and their content
- If I am correct - are there any other versioning limitations to be aware of
- If I am correct - how are you supposed to version local workflow services By deprecating method signatures, events, etc and replacing with new ones
- If I am missing something how can I load both v1.0.0.0 and v1.0.0.1 of a local service at the same time
- Does Microsoft have any comprehensive versioning examples that show versioning best practices
Thank You.
Here is the significant portion of my app.config.
<HostingWorkflowRuntime Name="Hosting"> <CommonParameters /> <Services> <add type="System.Workflow.Runtime.Hosting.DefaultWorkflowSchedulerService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" maxSimultaneousWorkflows="100" /> <add type="System.Workflow.Runtime.Hosting.SqlWorkflowPersistenceService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionString="Data Source=DEVSQL1;Initial Catalog=wf_persist_dev;User ID=wf_track_admin;Password=wf_track_admin;Persist Security Info=True;Application Name=WFPersistenceService;" LoadIntervalSeconds="120" unloadOnIdle="true" /> <add type="TWTC.WF.WFServices.TTrackingService, TWTC.WF.WFServices,Version=1.0.0.0, Culture=neutral, PublicKeyToken=50ef1afe3fe44d4e" connectionString="Data Source=DEVSQL1;Initial Catalog=wf_track_dev;User ID=wf_track_admin;Password=wf_track_admin;Persist Security Info=True;Application Name=WFTrackingService;" /> </Services> </HostingWorkflowRuntime> <LocalServices> <Services> <!--Add local work flow services here--> <add type="TWTC.WF.Order.WFServices.TOrderEntryServices, TWTC.WF.Order.WFServices,Version=1.0.0.0, Culture=neutral, PublicKeyToken=50ef1afe3fe44d4e" /> <add type="TWTC.WF.Order.WFServices.TTaskServices, TWTC.WF.Order.WFServices,Version=1.0.0.0, Culture=neutral, PublicKeyToken=50ef1afe3fe44d4e" /> <add type="TWTC.WF.Order.WFServices.TTaskIPCServices, TWTC.WF.Order.WFServices,Version=1.0.0.0, Culture=neutral, PublicKeyToken=50ef1afe3fe44d4e" /> <add type="TWTC.WF.WFServices.TWorkflowServices, TWTC.WF.WFServices,Version=1.0.0.0, Culture=neutral, PublicKeyToken=50ef1afe3fe44d4e" /> <add type="TWTC.WF.Order.WFServices.TOrderEntryServices, TWTC.WF.Order.WFServices,Version=1.0.0.1, Culture=neutral, PublicKeyToken=50ef1afe3fe44d4e" /> <add type="TWTC.WF.Order.WFServices.TTaskServices, TWTC.WF.Order.WFServices,Version=1.0.0.1, Culture=neutral, PublicKeyToken=50ef1afe3fe44d4e" /> <add type="TWTC.WF.Order.WFServices.TTaskIPCServices, TWTC.WF.Order.WFServices,Version=1.0.0.1, Culture=neutral, PublicKeyToken=50ef1afe3fe44d4e" /> </Services> </LocalServices>
Thanks.
|