dinsdag 7 augustus 2012

Windows Azure Workflow (WAW) troubleshooting

Right after I had installed WAS and tried to register my SharePoint 2013 test site collection with Windows Azure Workflow, the system told me it could not correctly communicate with the workflow service endpoint.

During WAW installation, databases and a new IIS website are created. This website has two end points running on port 12290 for HTTPS and 12291 for HTTP. If you use your browser to visit one of them you should see the correct endpoint scope info.

<?xml version="1.0"?>
<ScopeInfo xmlns="http://schemas.microsoft.com/workflow/2012/xaml/activities" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
   <DefaultWorkflowConfiguration/>
   <Description>Root Scope</Description>
   <LastModified>2012-08-07T11:09:34.42</LastModified>
   <LastRevised>2012-08-07T11:09:34.42</LastRevised>
   <Path>/</Path>
   <SecurityConfigurations>
      <ScopedSecurityConfiguration i:type="WindowsSecurityConfiguration">
         <Name>Microsoft.Workflow.Management.Security.WindowsSecurityConfiguration</Name>
         <WorkflowAdminGroupName>BUILTINAdministrators</WorkflowAdminGroupName>
      </ScopedSecurityConfiguration>
   </SecurityConfigurations>
   <Status>Active</Status>
</ScopeInfo>

However, in my case, I had a null pointer exception and I also could not start the 'Workflow service backend' service.

[NullReferenceException: Object reference not set to an instance of an object.] Microsoft.Workflow.Gateway.HttpMessageExtensions.AddServiceDiagnosticHeader(HttpResponseMessage response, ScopeOperationContext context) +165 Microsoft.Workflow.Gateway.HttpMessageExtensions.ConvertExceptionToResponse(HttpRequestMessage request, Exception exception, ScopeOperationContext context) +976 Microsoft.Workflow.Gateway.Global.CompleteRequestOnException(HttpContext context, Exception exception) +62 Microsoft.Workflow.Gateway.Global.Application_BeginRequest(Object sender, EventArgs e) +119 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +79 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +164

First of all, if you have troubles with the workflow infrastructure and want to start digging in, use this Microsoft article to get you started. Basically it tells you to go to the correct category in the Event Viewer (Microsoft-Workflow) to check for clues there.

So that's what I did and there I found the following message:

Unhandled exception in AppDomain:  Microsoft.Workflow.Common.FatalException: An unrecoverable error occurred. For diagnostic purposes, this English message is associated with the failure: 'Workflow Service configuration 'WorkflowServiceMaxDispatcherFailureRate' is not formatted correctly. The configuration string should be parsable to a 'Single' type. Current config value is '0.1'.'. ---> System.IO.InvalidDataException: Workflow Service configuration 'WorkflowServiceMaxDispatcherFailureRate' is not formatted correctly. The configuration string should be parsable to a 'Single' type. Current config value is '0.1'.
   at Microsoft.Workflow.Common.AsyncResult.End[TAsyncResult](IAsyncResult result)
   at Microsoft.Workflow.Service.WorkflowServiceBackendHost.OnStartCompleted(IAsyncResult result)
   --- End of inner exception stack trace ---
   at Microsoft.Workflow.Common.Fx.<>c__DisplayClass2.<FailFast>b__0()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart().

After spending a lot of time digging around in the web.config and related databases, I found that configuration value in the WFResourceManagementDB database. Then go into the WorkflowServiceConfig table and search for the configuration value. Change it from '0.1' to '0,1' and start the 'Workflow service backend' service. Now go back to your browser and refresh the page. You should see the correct endpoint scope info.

Geen opmerkingen:

Een reactie posten