Page Flow runtime errors

Topics: Web Client Software Factory
Feb 10, 2007 at 9:59 PM
I followed the Page Flow QuickStart and some WCSF Help How-tos to create a web app w/ a PageFlow module. I included references to missing page flow libraries. In web.config I copied the content of <sectionGroup name="pageFlow"> and <pageFlow> elements from the web.config of the PageFlowQuickStart solution. At runtime it gives:

"Could not load file or assembly 'PageFlowQuickstart.Infrastructure.PageFlow' or one of its dependencies. The system cannot find the file specified."

I am confused because this is not supposed to be used by my app. If I add the Infrastructure.PageFlow project (part of the PageFlowQuickStart solution), I still get the same error. If I use its DLLs, I get versioning errors.

Is there a complete and working example about how to use a Page Flow module in a Web Client App - with ALL the necessary steps to add missing design and runtime components?

TIA
Feb 11, 2007 at 6:28 PM
There is the page flow quick start of course, but it comes already configured. The problem is when you create a new WCSF web client app and add a page flow project. What page flow specific configuration changes are required? Aren't those supposed to be automatically included in web.config? Has somebody experienced the same problem?
Feb 11, 2007 at 7:02 PM
Have you had a look at the sections in the help named "How to: Enable your Solution for Page Flow" and "How to: Create a Page Flow Project"? These get you started with Page Flows, including what you need to add to web.config.

I agree with you though - it would be nice if there was automation to update web.config, create database creation scripts, etc. when adding Page Flow to a solution.

Simon
http://www.dotnetblogs.co.uk/
Feb 12, 2007 at 12:04 AM
Tnanks Simon,

I have already included what was missing in the web.config. Two questions:
1) Do I need any changes in the WCSF_Quickstart database?
2) Do I need a Infrastructure.PageFlow project in my solution?

TIA

Alex
Developer
Feb 12, 2007 at 3:11 AM
Edited Feb 12, 2007 at 3:12 AM
Hi Alex,

The Page Flow QuickStart uses custom instance store and correlation token providers instead of the default ones. Those providers are located in the Infrastructure.PageFlow project of the QuickStart, which is not required in your solution unless you want to use those custom providers.

If you just want to use the default providers included in the Page Flow Application Block, make sure you have these lines in the page flow configuration section of your application:

<pageFlowInstanceStoreProvider providerType="Microsoft.Practices.PageFlow.Storage.EnterpriseLibrary.PageFlowInstanceCorrelationSqlProvider, Microsoft.Practices.PageFlow.Storage.EnterpriseLibrary" connectionString="PageFlowPersistanceStore"/>
    <pageFlowInstanceCorrelationTokenProvider providerType="Microsoft.Practices.PageFlow.Storage.EnterpriseLibrary.CookiePageFlowCorrelationTokenProvider, Microsoft.Practices.PageFlow.Storage.EnterpriseLibrary" />
 

You also need to set up the PageFlowPersistanceStore connection string to point to a database that has the table pageFlow_InstanceStore (this table is required by the default instance store provider). To create this table, run the script PageFlowInstanceStore.sql. You can find this script in the Scripts folder in the source code of the PFAB.

Finally, make sure your website contains references to the PFAB assemblies, including Microsoft.Practices.PageFlow.Storage.EnterpriseLibrary.

As Simon pointed out, check the topic "How to: Enable your Solution for Page Flow" in the documentation for more information.

Cheers,
Mariano Szklanny
http://staff.southworks.net/mariano
Developer
Feb 12, 2007 at 4:05 PM

it would be nice if there was automation to update web.config, create database creation scripts, etc. when adding Page Flow to a solution.


Feel free to open an issue in the issue tracker for this if you feel it's a nice-to-have feature.

Thanks
Mariano Szklanny
http://staff.southworks.net/mariano
Feb 22, 2007 at 11:43 AM
Hi,

The same problem i am also facing, here is the sample my web.config file,
<sectionGroup name="pageFlow">
<section name="pageFlowProvider" type="Microsoft.Practices.PageFlow.Configuration.PageFlowProviderSection, Microsoft.Practices.PageFlow"/>
<section name="hostingWorkflowRuntime" type="System.Workflow.Runtime.Configuration.WorkflowRuntimeSection, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<section name="pageFlowInstanceStoreProvider" type="Microsoft.Practices.PageFlow.Configuration.PageFlowInstanceStoreProviderSection, Microsoft.Practices.PageFlow"/>
<section name="pageFlowInstanceCorrelationTokenProvider" type="Microsoft.Practices.PageFlow.Configuration.PageFlowInstanceCorrelationTokenProviderSection, Microsoft.Practices.PageFlow"/>
</sectionGroup>

<pageFlow>
<pageFlowProvider providerType="Microsoft.Practices.PageFlow.WorkflowFoundation.WorkflowFoundationPageFlowProvider, Microsoft.Practices.PageFlow.WorkflowFoundation"/>
<hostingWorkflowRuntime Name="Hosting">
<Services>
<add type="System.Workflow.Runtime.Hosting.SqlWorkflowPersistenceService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionString="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=WCSF_Quickstart;Data Source=loaclhost;"/>
<add type="System.Workflow.Runtime.Hosting.ManualWorkflowSchedulerService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" useActiveTimers="true"/>
<add type="System.Workflow.Activities.ExternalDataExchangeService, System.Workflow.Activities, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</Services>
</hostingWorkflowRuntime>
<pageFlowInstanceStoreProvider providerType="Microsoft.Practices.PageFlow.Storage.EnterpriseLibrary.PageFlowInstanceCorrelationSqlProvider, Microsoft.Practices.PageFlow.Storage.EnterpriseLibrary" connectionString="PageFlowPersistanceStore"/>
<pageFlowInstanceCorrelationTokenProvider providerType="Microsoft.Practices.PageFlow.Storage.EnterpriseLibrary.CookiePageFlowCorrelationTokenProvider, Microsoft.Practices.PageFlow.Storage.EnterpriseLibrary"/>
</pageFlow>
Two things I didn't understand is,
1. Does we need the Services section in <PageFlow> section? Because I am not using any persistence at present.
2. Its giving compilation error, error is: "The requested database PageFlowPersistanceStore is not defined in configuration"
I think error is the ConnectionString I am not used in my application. I am not using at this entire variable. How to eliminate of this error?

I saw the above said 2 sections help contents, there only specified "SectionGroup" only, not details of the individual "pageFlow" items.

Really I need help on this..

Cheers,
Ramesh T

Feb 26, 2007 at 1:50 PM
I resolved this issue, if any one wanted solution let me know.

Cheers,
Ramesh
Feb 28, 2007 at 8:43 PM
Please post you solution. It would be helpful.
Mar 12, 2007 at 12:11 PM
Please post your solution, I would normally share my solution with the world ;-)
May 4, 2007 at 12:39 PM
Hello,

I guess rameshtamma forgot to share his solution.:). Anyway going through the QuickStarts, you'll notice the declaration for the connection string "PageFlowPersistanceStore":

<connectionStrings>
<add name="PageFlowPersistanceStore" connectionString="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=WCSF_Quickstart;Data Source=.\SQLExpress" providerName="System.Data.SqlClient"/>
</connectionStrings>

Just like MarianoSzklanny said you must setup this connectionString.

Cheers,
Eli