Manually Publish Workflow Web Service
Last changed: -80.126.16.139

.
Summary

Fortunatly it isn't all that had to publish the workflow manually. Just add a web service project to the solution and add an ASMX file with the following content:

<%@ WebService Class="WebServiceInput.Workflow1_WebService" %>

The workflow class is named "WebServiceInput.Workflow1" and just add the "_WebService" suffix to it. Next add a reference from the web service project to the assembly containing the workflow.

Don't forget to also add refrences to the System.Workflow.Activities, System.Workflow.ComponentModel and System.Workflow.Runtime assemblies used at runtime.

Next create a WorkflowRuntime config section like so:

        <section name="WorkflowRuntime" 
             type="System.Workflow.Runtime.Configuration.WorkflowRuntimeSection, 
                   System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, 
                   PublicKeyToken=31bf3856ad364e35"/>

and

    <WorkflowRuntime Name="WorkflowRuntime">
        <Services>
            <add type="System.Workflow.Runtime.Hosting.ManualWorkflowSchedulerService, 
                 System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, 
                 PublicKeyToken=31bf3856ad364e35"/>
            <add type="System.Workflow.Runtime.Hosting.DefaultWorkflowCommitWorkBatchService, 
                 System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, 
                 PublicKeyToken=31bf3856ad364e35"/>
        </Services>
    </WorkflowRuntime>


Now you should be good to go

The only thing now is adding conversation support. Right now you will het this error

    "System.Web.Services.Protocols.SoapException: Server was unable to process request.
     ---> System.InvalidOperationException: Current session has no workflow instance 
     associated with it. Send activation message to start new instance in current session." 


even after adding a CookieContainer (see WorkflowWebService). The problem is that the cookie is never added to the response as this is done by WorkflowWebHostingModule http module. So to enable conversations just add the following to the web.config.

        <httpModules>
      <add type="System.Workflow.Runtime.Hosting.WorkflowWebHostingModule, 
                 System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, 
                 PublicKeyToken=31bf3856ad364e35" 
           name="WorkflowHost"/>
        </httpModules>