WF4 Versioning Spike: IIS Hosted Workflow Services

In my previous post, I’ve been exploring how changing the version of an ActivityLibrary affects a workflow.  In this post I want to explore how Workflow Services behave.

The good news – as far as I can tell, they behave exactly as they should behave loading the assembly version they were built with. 

For this test I have a Workflow Service that uses an activity from ActivityLibrary1 and we will run through a similar set of scenarios deploying a Workflow Service (.xamlx) to a web site hosted in IIS.

Scenario 1: Baseline 
Host (IIS) Workflow Service V1, Activity (Bin V1)

Expected: Workflow Service will load Activity V1 from Bin directory

Assembly Version Path
XamlAssemblyResolutionWeb 1.0.0.0 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\8950055e\173b0e0e\assembly\dl3\f71eb821\4409cc42_f2b0cb01\XamlAssemblyResolutionWeb.DLL
ActivityLibrary1 1.0.0.0 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\8950055e\173b0e0e\assembly\dl3\d859493c\625d8742_f2b0cb01\ActivityLibrary1.DLL

Scenario 2: Activity in GAC 
Host (IIS) Workflow Service V1, Activity (GAC V1)

Expected: Workflow Service will load Activity V1 from GAC

Assembly Version Path
XamlAssemblyResolutionWeb 1.0.0.0 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\8950055e\173b0e0e\assembly\dl3\f71eb821\c80c6811_f6b0cb01\XamlAssemblyResolutionWeb.DLL
ActivityLibrary1 1.0.0.0 C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\ActivityLibrary1\v4.0_1.0.0.0__c18b97d2d48a43ab\ActivityLibrary1.dll

 

Scenario 3: Upgrade Activity to V2 deploy to bin 
Host (IIS) Workflow Service V1, Activity (Bin V2)

Expected: Workflow Service will fail with exception because it cannot load Activity V1

Actual: System.IO.FileLoadException: Could not load file or assembly 'ActivityLibrary1, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c18b97d2d48a43ab' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Scenario 4: Upgrade Activity to V2 deploy to GAC side by side with V1
Host (IIS) Workflow Service V1, Activity V2, Deploy (Bin V2) (GAC V1, V2)

Expected: Workflow Service will load activity V1 from GAC

Assembly Version Path
XamlAssemblyResolutionWeb 1.0.0.0 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\8950055e\173b0e0e\assembly\dl3\f71eb821\46453429_f8b0cb01\XamlAssemblyResolutionWeb.DLL
ActivityLibrary1 1.0.0.0 C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\ActivityLibrary1\v4.0_1.0.0.0__c18b97d2d48a43ab\ActivityLibrary1.dll

 

Scenario 5: Upgrade Activity to V2 deploy to GAC remove V1 from GAC
Host (IIS) Workflow Service V1, Activity (GAC V2)

Expected: Workflow Service will fail with exception because it cannot load Activity V1

Actual: Exception Could not load file or assembly 'ActivityLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c18b97d2d48a43ab' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Scenario 6: Upgrade Workflow Service and Activity but fail to deploy Activity V2
Host (IIS) Workflow Service V2, Activity (GAC V1)

Expected: Workflow Service will fail with exception because it cannot load Activity V2

Actual: System.IO.FileNotFoundException: Could not load file or assembly 'ActivityLibrary1, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c18b97d2d48a43ab' or one of its dependencies. The system cannot find the file specified.

Scenario 7: Upgrade Workflow Service and Activity but fail to deploy Activity V2

Host (IIS) Workflow Service V2, Activity (GAC V1) (Bin V1)

Expected: Workflow Service will fail with exception because it cannot load Activity V2

Actual: System.IO.FileLoadException: Could not load file or assembly 'ActivityLibrary1, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c18b97d2d48a43ab' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

Scenario 8: Upgrade Workflow Service and Activity but fail to deploy Activity V2
Host (IIS) Workflow Service V2, Activity (GAC V1) (Bin V1)

Expected: Workflow Service will fail with exception because it cannot load Activity V2

Actual: System.IO.FileLoadException: Could not load file or assembly 'ActivityLibrary1, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c18b97d2d48a43ab' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)