【问题标题】:Hosting a self-hosted WF in IIS在 IIS 中托管自托管 WF
【发布时间】:2011-03-04 10:21:19
【问题描述】:

有谁知道是否可以在 IIS 中托管自托管的 WorkflowServiceHost 应用程序而不将其转换为 XAMLX 文件?如果有,怎么做?

此外,对于将 XAMLX 文件普遍部署到 IIS 7,是否有人有任何好的指导方针?

提前致谢

【问题讨论】:

  • 自托管是什么意思?一旦它是自托管的,为什么要再次托管它?
  • 抱歉,我知道它是多么令人困惑。我的意思是我已经编写了一个自托管的服务,但我现在想在 IIS 下托管它以利用运行状况监控等。我需要知道最简单的方法来解决这个问题。

标签: wcf workflow-foundation-4 workflowservice


【解决方案1】:

您可以通过编写自己的托管引擎而不是 XAMLX 来完成相同的基本操作。然后,您可以通过 ASP.NET 加载应用程序,但可以完全控制其生命周期/生命周期。

您必须创建自己的主机才能将.XAML 工作流加载到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 日)

如果有人想要一份基本代码的副本来执行此操作,请找到联系我的方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 2021-11-01
    • 2017-07-10
    • 1970-01-01
    相关资源
    最近更新 更多