第 3 课:为订单服务配置 Windows PowerShell

完成所需时间:20 分钟

目的:演示如何使用 Windows Server AppFabric cmdlet 配置应用程序。

用途:用于 Windows PowerShell 的 AppFabric cmdlet 再次提供了一个有用的工具,开发人员和管理员可以使用该工具自动配置和管理其中包含 WCF 和/或 WF 服务的应用程序。在本课中,您将重新配置订单服务应用程序的监控和暂留功能。

先决条件

在开始本课程前,请注意以下先决条件:

过程

使用 Windows PowerShell 重新配置订单服务应用程序需完成以下过程:

  1. 创建并初始化应用程序的监控和暂留存储。

  2. 为该存储创建连接字符串。

  3. 将订单服务应用程序的 OrderWorkflow 服务配置为使用新的监控和暂留存储。

  4. 启用应用程序的 net.pipe 协议。

创建并初始化监控和暂留数据库

在本节中,您将新建并初始化用于订单服务应用程序的监控存储和暂留存储。

创建并初始化监控存储

  1. 从 Windows PowerShell 执行以下命令。

    Initialize-ASMonitoringSqlDatabase -Database "OrderService_PS" -Admins "AS_Administrators","NT AUTHORITY\LOCAL SERVICE" -Readers "AS_Observers" -Writers "BUILTIN\IIS_IUSRS" | fl *
    

    请注意,您指定的存储名称具有“_PS”后缀,这表示该名称是使用 Windows PowerShell 指定的。这样便不会与用户界面教程之间产生任何命名冲突。

    为存储设置的权限都基于默认的 AppFabric 权限和主体名称。

    在前面的命令中,您将结果存储对象传输到 Windows PowerShell Format-List cmdlet 的 fl 别名中。因为默认的表格格式会截断结果,所以不要使用默认格式,改用列表格式可以更容易地看到操作结果。

  2. 确认运行此命令后 Windows PowerShell 中的输出正确无误,类似于如下内容。

    Server           : SERVER1
    Database         : OrderService_PS
    ConnectionString : Data Source=SERVER1;Initial Catalog=OrderService_PS;Integrated Security=True
    

至此,一个新的名为 OrderService_PS 的用于监控的监控存储已创建并初始化完毕。

创建并初始化暂留存储

要使用与暂留相关的表和项目来初始化 OrderService_PS 存储,请使用 Initialize-ASPersistenceDatabase cmdlet。此 cmdlet 接受与安全相关的以下三个参数:

  • -Admins

  • -Readers

  • -Users

在本教程中,您将再次使用默认的 AppFabric 主体名称。将这些参数与此 cmdlet 一起使用时,必须使用完整的主体名称。为此,您需使用 Windows PowerShell 的环境提供程序来解析本地计算机名。要观察其工作方式,请将下面的命令输入到 Windows PowerShell 中。

$env:COMPUTERNAME

该命令的结果将根据 COMPUTERNAME 环境变量来显示本地计算机名。您将使用这种方法来提供默认的 AppFabric 主体的完整主体名称。

创建并初始化订单服务应用程序的暂留存储的步骤

  1. 在 Windows PowerShell 中输入以下命令,以使用默认的 AppFabric 主体名称初始化暂留的 OrderService_PS 存储。

    Initialize-ASPersistenceSqlDatabase -Database "OrderService_PS" -Admins "$($env:COMPUTERNAME)\AS_Administrators" -Readers "$($env:COMPUTERNAME)\AS_Observers" -Users "BUILTIN\IIS_IUSRS" –Confirm:$false | fl *
    

    请注意您所传递的 –Confirm:$false 参数。使用该参数可以绕过有关确认对该存储所做更改的提示。

  2. 确认结果正确无误,类似于下面显示的内容。

    Server           : SERVER1
    Database         : OrderService_PS
    ConnectionString : Data Source=SERVER1;Initial Catalog=OrderService_PS
    

至此,用于暂留的 OrderService_PS 存储已初始化完毕。

创建连接字符串

要将应用程序配置为使用刚刚新建的监控和暂留存储,您必须为新存储创建一个连接字符串。目前,用于 Windows PowerShell 的 ApplicationServer 模块 不包含可完成此操作的 cmdlet。因此,我们将使用基于 AppFabric 的脚本配置示例(该示例演示如何执行此操作)中的示例代码的脚本函数示例。有关该示例的详细信息,请参阅示例

为新存储创建连接字符串的步骤

  1. 在 Windows PowerShell 中键入以下命令以打开 Utility.ps1。

    Notepad Utility.ps1
    
  2. 复制下面的代码并将其粘贴到记事本中该文件的底部。

    #=========================================================================================================#
    #===                                                                                                   ===#
    #=== Adds or updates the specified connection string setting in the specified .NET configuration file. ===#
    #===                                                                                                   ===#
    #=========================================================================================================#
    
    function UpdateConnectionString([string]$name, [string]$connectionString)
    {
        $providerName = "System.Data.SqlClient"
    
        $NETFramework4Path = gp -Path HKLM:\Software\Microsoft\'NET Framework Setup'\NDP\v4\Full
        $ConfigPath = "$($NETFramework4Path.InstallPath)Config\Web.config"
    
        Write-Output ("ConfigPath : " + $ConfigPath)
    
        $xml = [xml](Get-Content $ConfigPath)
        $root = $xml.get_DocumentElement()
    
    
        $connectionStrings = $root.SelectSingleNode("connectionStrings")
        if ($connectionStrings -eq $null)
        {
            $locations = $root.SelectNodes("location")
    
            foreach ($locationNode in $locations)
            {
                $locStrings = $locationNode.SelectSingleNode("connectionStrings")
    
                if ($locStrings -ne $null)
                {
                    $connectionStrings = $locStrings
                }
            }
    
            if ($connectionStrings -eq $null)
            {
                $connectionStrings = $xml.CreateElement("connectionStrings")
                $root.AppendChild($connectionStrings) | Out-Null
            }
        }
    
        $xpath = "add[@name='" + $name + "']"
        $add = $connectionStrings.SelectSingleNode($xpath)
        if ($add -eq $null)
        {
            Write-Output "Adding new connection string setting..."
            $add = $xml.CreateElement("add")
            $connectionStrings.AppendChild($add) | Out-Null
        }
        else
        {
            Write-Output "Updating existing connection string setting..."
        }
    
        $add.SetAttribute("name", $name)
        $add.SetAttribute("connectionString", $connectionString)
        $add.SetAttribute("providerName", $providerName)
        Write-Output $add | Format-List
    
        $xml.Save($ConfigPath)
    }
    
  3. 关闭记事本,然后单击“保存”以保存 Utility.ps1

  4. 在 Windows PowerShell 中输入以下命令,将 Utility.ps1 脚本添加为当前 Windows PowerShell 会话的模块。

    import-module .\Utility.ps1
    
  5. 在 Windows PowerShell 中,您可以使用 UpdateConnectionString 函数来添加新的连接字符串。必须根据用于本教程的计算机上安装的是 Microsoft SQL Server 还是 SQL Server Express 来选择正确的数据源。

    • 如果仅安装了 SQL Server Express,则使用以下命令,将本地计算机上的 SQL Server Express 用作数据源:

      UpdateConnectionString "OrderService_PS" "Data Source=.\SQLEXPRESS;Initial Catalog=OrderService_PS;Integrated Security=True"
      
    • 如果安装的是 SQL Server,则使用以下命令,将 SQL Server 用作数据源:

      UpdateConnectionString "OrderService_PS" "Data Source=localhost;Initial Catalog=OrderService_PS;Integrated Security=True"
      
  6. 通过运行 Internet Information Services (IIS) 管理器验证新连接字符串,然后双击监控数据库配置小程序。此操作应显示名为 OrderService_PS 的新连接字符串以及默认的连接字符串。新连接字符串的状态应为“已初始化”。

现在,可以使用 AppFabric 配置订单服务应用程序,将 OrderService_PS 存储用于监控和暂留。

将应用程序配置为使用监控和暂留数据库

将订单 Service_PS 网站配置为使用新存储进行监控的步骤

  1. 在 Windows PowerShell 中输入以下命令,将 OrderService_PS 网站的监控配置为使用新存储。

    Set-ASAppMonitoring -SiteName OrderService_PS -MonitoringLevel HealthMonitoring -ConnectionStringName OrderService_PS
    
  2. 确认运行该命令后的输出类似于如下内容,该输出显示的是应用于网站的监控设置。

    ConnectionStringName : OrderService_PS
    ConnectionString     : Data Source=localhost;Initial Catalog=OrderService_PS;Integrated Security=True
    IsEnabled            : True
    MonitoringLevel      : HealthMonitoring
    ProviderId           : c37234f8-4eae-41c8-9bd4-cd42706d4219
    ProviderName         : System.Data.SqlClient
    TrackingProfile      : HealthMonitoring Tracking Profile
    SiteName             : OrderService_PS
    VirtualPath          : /
    

将 OrderService_PS 网站也配置为使用新存储进行暂留的步骤

  1. 在 Windows PowerShell 中执行以下命令。

    Set-ASAppSqlServicePersistence -SiteName OrderService_PS -ConnectionStringName OrderService_PS
    
  2. 确认运行该命令后的输出类似于如下内容,该输出显示的是应用于网站的暂留设置。

    ConnectionString              :
    ConnectionStringName          : OrderService_PS
    HostLockRenewalPeriod         : 00:00:20
    InstanceCompletionAction      : DeleteNothing
    InstanceEncodingOption        : GZip
    InstanceLockedExceptionAction : BasicRetry
    AuthorizedWindowsGroup        : AS_Administrators
    IsLocal                       : True
    BehaviorName                  :
    

启用 net.pipe 协议

如果按照Windows Server AppFabric 界面的使用教程中的第 3 课:配置 HRApplicationServices 应用程序的步骤执行操作,则应当已经为 OrderWorkflowService Web 应用程序启用了 net.pipe 协议。但是,本节将向您演示如何使用 Windows PowerShell 启用该协议。用于 Windows PowerShell 的 ApplicationServer 模块 不公开此操作的 cmdlet。实际上,该操作是使用 Appcmd.exe 执行的。有关 Appcmd.exe 的详细信息,请参阅下面的链接:Appcmd.exe (https://go.microsoft.com/fwlink/?LinkId=169337)(英文网页)。

要为 OrderWorkflowService Web 应用程序启用 net.pipe 协议,请在 Windows PowerShell 中执行以下命令。

.$env:SystemRoot\System32\inetsrv\appcmd.exe set app "OrderService_PS/OrderWorkflowService" /enabledProtocols:"http,net.pipe"

Appcmd.exe 将在 Windows PowerShell 中报告操作成功,如下所示。

APP object "OrderService_PS/OrderWorkflowService" changed

我刚才执行了哪些操作?

在本课中,您使用 AppFabric cmdlet 新建了监控和暂留存储。您还在 Web.config 文件中新建了连接字符串,然后将 OrderService_PS 网站配置为使用新存储进行监控和暂留。您可以将所有这些命令添加到 Windows PowerShell 脚本中,以自动执行应用程序配置。

后续步骤

第 4 课:使用 Windows PowerShell 监控订购服务中,您将学习如何使用 AppFabric cmdlet 监控应用程序。

另请参阅

概念

第 1 课:Windows PowerShell 的 Windows Server AppFabric Cmdlet 入门
第 2 课:使用 Windows PowerShell 部署订单服务应用程序
第 4 课:使用 Windows PowerShell 监控订购服务
第 5 课:使用 Windows PowerShell 跟踪工作流

  2011-12-05