有谁知道是否可以在 IIS 中托管自托管的 WorkflowServiceHost 应用程序而不将其转换为 XAMLX 文件?如果是这样,怎么做?
此外,对于将 XAMLX 文件通常部署到 IIS 7,是否有人有任何好的指导方针?
提前致谢
有谁知道是否可以在 IIS 中托管自托管的 WorkflowServiceHost 应用程序而不将其转换为 XAMLX 文件?如果是这样,怎么做?
此外,对于将 XAMLX 文件通常部署到 IIS 7,是否有人有任何好的指导方针?
提前致谢
您可以通过编写自己的托管引擎而不是 XAMLX 来完成相同的基本操作。然后,您可以通过 ASP.NET 加载应用程序,但可以完全控制其生命周期/生命周期。
您必须创建自己的主机才能将.XAML
工作流加载到类似 a 的内容WorkflowApplication
中并管理该工作流的生命周期。它看起来像这样:
private SqlWorkflowInstanceStore _InstanceStore { get; private set; }
private InstanceHandle _MyInstanceHandle { get; private set; }
_InstanceStore = new SqlWorkflowInstanceStore(DataStore.ConnectionString.Replace("MultipleActiveResultSets=True", "MultipleActiveResultSets=False"));
_InstanceStore.HostLockRenewalPeriod = new TimeSpan(0, 0, 30);
_InstanceStore.InstanceEncodingOption = InstanceEncodingOption.None;
_InstanceStore.InstanceLockedExceptionAction = InstanceLockedExceptionAction.BasicRetry;
_InstanceStore.InstanceCompletionAction = InstanceCompletionAction.DeleteNothing;
_MyInstanceHandle = _InstanceStore.CreateInstanceHandle();
var CreateOwnerCommand = new CreateWorkflowOwnerCommand();
var MyView = _InstanceStore.Execute(_MyInstanceHandle, CreateOwnerCommand, TimeSpan.FromSeconds(30));
_InstanceStore.DefaultInstanceOwner = MyView.InstanceOwner;
WorkflowApplication ThisApplication = null;
if (parameters == null)
ThisApplication = new WorkflowApplication(activity);
else
ThisApplication = new WorkflowApplication(activity, parameters);
ThisApplication.PersistableIdle = e => PersistableIdleAction.Unload;
ThisApplication.InstanceStore = this.InstanceStore;
ThisApplication.Run();
除了上面的内容之外,它还有更多内容,但它给出了它如何工作的基本概念。
编辑(2011 年 3 月 23 日)
如果有人想要一份基本代码的副本来执行此操作,请找到联系我的方法。