Spending a lot a time (anwering) in the Sharepoint newsgroups, I’ve noticed the "Failed On Start" error is an extremely frequent question.This post will probably help many people.
When we start a (Custom) Sharepoint Workflow (but even sometimes Out of the Box workflows) the infamous Failed on start (retrying) error may hit you.The most common reasons of this error are:
1. in most cases the main reason is that the CodeBesideclass and the CodeBeside assembly in workflow.xml don’t match the workflow class name & assembly strong name of the dll registered in the GAC ("Unexpected Load Workflow Assembly: System.IO.FileNotFoundException: Could not load file or assembly xxxx") is what you will find in the Sharepoint log.
User Reflector the compare your assemblies strong name/class name & don’t forget the namespace!
2.the workflow-eventdelivery-throttle parameter is to low
To prevent web front ends (w3wp) from getting overrun by running too many workflows instances, there is a throttle limit. If more events than the throttle are already being processed, the newer events are enqueued as work items – they will be picked up by OWSTimer.
If your workflows don’t start immediately as expected you probably have to increase this throttle limit
stsadm -o setproperty -pn workflow-eventdelivery-throttle -pv "20" (the default value is 15).
By Code :
SPWebApplication myWebApps = SPWebApplication.Lookup(new Uri(websiteUrl));
myWebApps.WebService.WorkflowEventDeliveryThrottle = 20;
It looks like in some situations” a Failed On Start” may be triggered and can be solved by increasing this value.
In some cases, I’ve noticed that increasing this value may solve a “Failed On Start” which indeed is very strange : when the W3P.exe is overrun, all actions (including event deliveries) are supposed the be enqueued (and thus executed later) but the OWSTIME.exe service.
The error message in the Sharepoint log looks like this:
Windows SharePoint Services Workflow Infrastructure 936r Verbose RunWorkflow: No pending events – possibly targeted for async delivery
3.the transaction timeout value is too low can also generate a Failed on Start, specially when a lot of task (several hundreds) are created by the workflow which try to store the in a SQL Server transaction. the information you will find in the Sharepoint log file is soething like this
Workflow Infrastructure 72fg High Error in persisting workflow: System.Transactions.TransactionAbortedException: The transaction has aborted. —> System.TimeoutException: Transaction Timeout — End of inner exception stack trace — at System.Transactions.TransactionStateAborted.CreateAbortingClone(InternalTransaction tx).
One possible workaround is to increase the timeout value in the web.config file. By default the value is set to 1 minute. You can increase the value to 5 minutes for instance :
4.repair of the .NET 3.0/.Net 3.5 Framework may be necessary. If you have SP1 for the .NET Framework installed, just go into the Control Panel/Add Remove Programs and click the Change button on Microsoft .NET Framework 3.0 SP1. If you don’t have the Service Pack you can install it. The Change process takes about 2 minutes.
5.A more exotic one : Workflow Foundation performance counters not loaded
Reload them again: Lodctr "c:\Windows\Microsoft.Net\Framework\v3.0\Windows Workflow Foundation\perfcounters.ini"