.NET 版本

Version 24.3.9111


.NET 版本


知行之桥的 .NET 版本包括一个独立的内置 web 服务器,也可以在 IIS 中托管。本节介绍在 Windows 中托管应用程序的各种选项。

如果没有使用 IIS 的经验,建议使用内置服务器。内置服务器在安装时自动部署,并为服务器级管理任务提供简单的界面,如配置日志记录、将应用程序作为服务运行以及启用 TLS/SSL。

内置服务器

本节说明如何配置独立的内置 Web 服务器,包括如何配置主机 TLS/SSL 连接和云网关,这是一个反向的 SSH 隧道。

当托管在独立服务器中时,应用程序可以作为一个 Windows 服务运行:

  1. 右键单击任务栏中的知行之桥图标并单击服务器选项
  2. 选择作为 Windows 服务运行
  3. 保存更改

配置 TLS/SSL 连接(内置服务器)

可以要求 TLS 并以纯文本形式提供服务。 本节介绍如何在 Windows 版应用程序附带的独立服务器中托管 TLS/SSL 连接。 要为 Java 版本部署 TLS/SSL,请参阅用于托管应用程序的 Java servlet 的文档。

  1. 右键单击 Windows 系统任务栏中应用程序的图标并单击服务器选项
  2. 在 Web 服务器选项卡上,选择启用 HTTPS 并选择要监听 HTTPS 连接的端口。
  3. 单击服务器证书框旁边的按钮,选择私钥证书。私钥证书必须安装到本地计算机证书存储中。如果没有符合该条件的证书,请单击创建新证书来创建一个证书。

服务器对话框

保存更改后,服务器将重新启动并开始处理 HTTPS 请求。

管理个人证书

如果要管理“证书选择”对话框中可用的证书,它们位于本地计算机的“个人”证书存储中。要将证书添加到 Windows 存储,请执行以下操作:

  1. 在开始菜单中输入 mmc 启动 Microsoft 管理控制台
  2. 单击文件 > 添加/删除管理单元
  3. 从可用的管理单元列表中选择证书并单击添加

    添加管理单元

  4. 选择计算机帐户 > 本地计算机
  5. 添加管理单元后,单击证书(本地计算机) > 个人 > 证书以显示可用的证书。可使用私钥的证书在证书图标上有一个小钥匙图标。
  6. 要将证书从本地磁盘导入到此存储中,请单击操作 > 所有任务 > 导入。完成导入后,在应用程序证书选择对话框中找到证书。

云网关

知行之桥的云网关功能提供了一种简单的方法,可将应用程序公开到 Internet,而无需更改防火墙设置。只要公共访问的 SSH 服务器可用,就可以利用 SSH 反向隧道通过公共访问的 SSH 服务器上的端口访问知行之桥。

如需使用此功能,请右键单击系统任务栏中的应用程序图标,然后选择服务器选项。导航到云网关选项卡,如下所示,输入以下信息:

云网关

  • 主机 表示知行之桥要连接的 SSH 服务器。
  • 端口 表示 SSH 主机正在监听连接的端口。默认情况下,大多数 SSH 服务器都监听端口 22。
  • 认证类型 表示要使用的认证类型。支持 PasswordPublic KeyMulti-FactorKeyboard Interactive
  • 用户 表示知行之桥用来认证 SSH 服务器的用户名。
  • 密码 表示用于根据需要使用的认证类型进行认证的密码。
  • 证书 表示认证类型为 Public Key Authentication 时,知行之桥用于对 SSH 服务器进行身份验证的证书。
  • 服务器指纹 表示 SSH 服务器的 SSH 主机密钥指纹。该值是只读的,仅供参考。
  • 转发端口 表示公共可用的 SSH 服务器监听的端口,以转发到知行之桥的连接。

另外,可能需要更改 SSH 服务器的配置以允许端口转发。SSH 服务器的默认配置可能并不总是允许端口转发到非本地主机地址。例如,如果连接到 OpenSSH 服务器,则必须在 SSH 服务器配置文件中将 GatewayPorts 属性设置为 yesclientspecified

输入此信息后,单击测试连接以测试与 SSH 服务器的连接情况,验证所提供信息的有效性。如果成功,则重新启动应用程序后,即可通过 SSH 主机上的转发端口访问知行之桥。例如,如果指定了 SSH 服务器 my.ssh.host转发端口为 8401,则在浏览器中输入 https://my.ssh.host:8401 将使得通信被转发到运行知行之桥的本地计算机,从而允许公共访问,尽管无法直接访问它。

Windows 验证

默认情况下,嵌入式 Web 服务器使用 ASP.NET 的基于表单的身份验证,这要求在 Web 表单(登录门户)中输入用户名/密码组合以授予对管理控制台的访问权限。知行之桥还支持 Windows 身份验证,以向特定 Windows 用户或安全组授予应用程序访问权限。

在嵌入式 Web 服务器上启用 Windows 身份验证之前,应该将需要访问知行之桥的所有 用户 添加到知行之桥应用程序。所有 Windows AD 知行之桥用户名都必须使用以下语法:DOMAIN\Username。语法如下图所示。

注意:您必须单独添加用户,因为无法授予整个组对应用程序的访问权限。

接下来,要启用 Windows 身份验证,请打开嵌入式 Web 服务器配置 UI(右键单击系统托盘中的知行之桥图标并选择 服务器选项),然后切换 Web 服务器 选项卡下的 身份验证类型 字段。单击 保存更改。这将重新启动 Web 服务器和应用程序。

从那时起,当已添加到知行之桥的 Windows AD 用户登录到他们的计算机并在浏览器中导航到知行之桥时,他们会自动登录。

在 IIS 中进行配置

知行之桥支持 IIS 10,并且系统要求 指定计算机必须运行 Windows 10 或 Windows Server 2016 或更高版本。 如果在设置 IIS 时遇到困难,请参阅疑难解答 IIS 部分。 如果仍有疑问,请联系我们的支持团队){:target=”_blank”}以获得进一步帮助。

创建一个新的 Web 应用程序

注意: 本示例使用默认网站。

将应用程序托管在网站上:

  1. 在 IIS 管理器中,在连接面板中展开服务器的节点。
  2. 展开网站节点,右键单击网站,然后单击添加应用程序
  3. 在显示的添加应用程序对话框中,输入以下信息:
  • Alias 应用程序的名称;例如 “arc”。
  • 应用程序池 与应用程序关联的应用程序池。本教程使用 “DefaultAppPool”。
  • 物理路径 www目录的路径,在安装应用程序的目录中。该目录的默认位置是 C:\Program Files\CData\CData Arc\www。

配置路径权限

应用程序必须具有对知行之桥应用程序目录的完全访问权限才能获得全部功能。

在 知行之桥2020 及更早版本中,应用程序目录和安装目录是相同的,默认情况下为 C:\Program Files\CData\CData Arc\ 。 如果你从以前版本的 知行之桥 升级到 知行之桥 2024,这仍然是你的应用程序目录。

在 知行之桥2021 中,应用程序目录从安装目录中分离出来。 安装目录仍然是 C:\Program Files\CData\CData Arc\。 但是,应用程序目录移动到了C:\ProgramData\CData\Arc\

应用程序目录包含以下文件夹:

  • connectors
  • data
  • db
  • locks
  • logs
  • schemas
  • workspaces

安装目录包含:

  • 程序可执行文件(Arc.exe,CData.exe)和配置文件
  • www 文件夹和子文件夹
  • www_services 文件夹和子文件夹
  1. 右键单击该文件夹,然后单击属性。在安全性标签上,点击编辑 > 新增
  2. 输入对象名称来选择框中,输入以下内容,替换应用程序池的名称:IIS AppPool\\[your-application-pool]。 例如,IIS AppPool\\DefaultAppPool
  3. 确保应用程序池具有以下权限:

    • 修改
    • 读 & 执行
    • 列出文件夹内容

注意:也可使用命令行来允许访问应用程序池。例如:

icacls "<application directory>" /grant "IIS APPPOOL\\DefaultAppPool":(OI)(M)

配置服务器权限

如果你使用的是 sftpserver 或 ftpserver,则必须确保应用程序池已将正确的权限设置提供给该服务器配置的根目录。 如果你将根目录创建为应用程序目录路径的子目录,那么在父应用程序目录及其子文件夹上设置权限就足够了。

防止卸载应用程序进程

IIS 可以关闭 Web 应用程序的原因有很多,其中包括超过了闲置超时(分钟),或者认为应用程序池的资源使用率过高。这可能会阻止后台任务在应用程序中发生。通过修改以下设置,确保应用程序保持运行:

  1. 启用可选的应用程序初始化功能。

    在 Windows Server 2016 中,打开服务器管理器,然后单击仪表板 > 快速入门 > 添加角色和功能。打开添加角色和功能向导。在服务器角色步骤中,单击 Web 服务器(IIS)> Web 服务器 > 应用程序开发 > 应用程序初始化

    在 Windows 10 中,打开控制面板,然后单击程序和功能 > 启用或关闭 Windows 功能。单击 Internet Information Services > 万维网服务 > 应用程序开发功能 > 应用程序初始化

  2. 在 IIS 管理器中,单击连接面板中的应用程序池

  3. 在工作区中,右键单击应用程序池,然后单击高级设置

  4. 在常规设置中,将启动模式设置为 AlwaysRunning

  5. 在进程模型设置中,将闲置超时属性设置为 0

  6. 在 CPU 部分,将限制间隔属性设置为 0

  7. 在回收部分,将固定时间间隔属性设置为 0

  8. 在回收部分下的生成回收事件日志条目节点,将固定时间间隔设置为 False

  9. 返回 IIS 管理器,右键单击网站,然后单击 管理网站 > 高级设置

  10. 在常规设置中,将 Preload Enabled 设置为 True,然后单击 OK。 这可确保应用程序在回收后立即启动。

配置 ASP.NET 应用程序池回收

IIS 会定期回收,以便清理 ASP.NET 应用程序池的进程。可改为在非高峰时段进行回收,方法是导航到回收部分,并将特定时间设置为 True,然后以 hh:mm:ss 格式输入回收时间。

预加载应用程序

IIS 的预加载功允许应用程序在用户连接之前运行,从而提高了性能。启用此功能,请在连接面板中右键单击与知行之桥关联的 Web 应用程序,然后选择管理应用程序 > 高级设置。在 PreloadEnabled 菜单中,选择 True

当 PreloadEnabled 设置为 True 时,IIS 将模拟用户请求访问网站或虚拟目录的默认页面,以便应用程序初始化。

确认设置

打开该应用程序,请浏览至 http://localhost/arc。如果遇到任何错误,请参阅疑难解答 IIS

提供 TLS/SSL 连接(IIS)

TLS/SSL 可用于保护与交易伙伴之间的关键型业务和关键型任务通信的机密性。以下假设已经拥有一个证书,可用来在服务器上启用 HTTPS。

  1. 在 IIS 管理器中,在连接窗口中单击网站的节点。
  2. 点击操作窗口中的绑定
  3. 点击添加并选择 HTTPS
  4. 选择服务器证书
  5. 如果要求 HTTPS,请双击工作区中的 TLS/SSL 设置图标,网站的节点仍处于选中状态。选择需要 TLS/SSL 并单击操作窗口中的应用

Windows 身份验证

当知行之桥托管在 IIS 中时,配置知行之桥以使用 Windows 身份验证与使用 .NET 嵌入式 Web 服务器 所需的配置类似。但是,无需在嵌入式 Web 服务器中进行更改,而是在 IIS 中进行必要的更改。

要在知行之桥托管在 IIS 中时设置 Windows 身份验证,请按照以下步骤操作:

  1. 登录知行之桥并将需要访问知行之桥的所有 Windows AD 用户 添加到应用程序。Windows AD 知行之桥用户名必须使用以下语法:DOMAIN\Username
    注意:必须单独添加用户,因为无法授予整个组对应用程序的访问权限。
  2. 打开 IIS 以停止为知行之桥配置的站点。右键单击网站并选择管理网站 > 停止
  3. 单击知行之桥网站以打开主页。选择 IIS 部分下的身份验证
    出现一个屏幕,列出一组身份验证方法。右键单击表单身份验证并选择禁用。这将关闭需要使用用户名和密码登录的默认身份验证方法。
  4. 右键单击 Windows 身份验证 并选择 启用
  5. 在 IIS 中重新启动站点。

注意:可能需要在 IIS 中编辑 Windows 身份验证提供程序,以便 IIS 在访问知行之桥时不再提示输入用户名和密码。要从 IIS 身份验证设置中执行此操作,请右键单击 Windows 身份验证 并选择 提供程序。将打开提供程序列表:

确保 NTLM 位于列表顶部,以便提供程序在知行之桥进行身份验证时具有优先权。可能需要完全删除 Negotiate 以停止用户名和密码请求。

在 IIS 中正确配置 Windows 身份验证后,当您访问应用程序时,将自动以已登录的 Windows AD 用户身份登录知行之桥。

疑难解答 IIS

以下各节提供了几种常见错误的解决方法。

在注销后,应用程序停止响应

IIS 可能会在应用程序非活动状态超时后卸载它。默认情况下,IIS 会在应用程序非活动状态持续 20 分钟后终止分配给应用程序的工作进程。设置 IIS 版本的步骤中的“防止卸载应用程序进程”一节解释了如何关闭此功能。

访问 http://localhost/application 导致“页面无法显示”错误(HTTP 404 错误)

如果 ASP.NET 没有启用,这种情况就会发生。要确认 ASP.NET 是否已启用,请访问 http://localhost/arc/favicon.ico。如果此页面加载成功,则 ASP.NET 未启用。

该部分在父级被锁定

锁定要么是默认的(overrideModeDefault="Deny"),要么是通过带有overrideMode="Deny"或旧版allowOverride="false"的位置标记明确设置的。

如果未安装 ASP.NET,可能会出现此错误。

用户管理

当首次启动知行之桥时,它会提示使用用户名/密码凭据创建用户。 创建第一个用户后,可以在系统设置用户选项卡上添加、删除和管理用户。

请参阅用户角色以了解有关用户管理和角色的更多信息。

查找和配置应用程序目录

知行之桥的应用程序目录保存应用程序使用的所有数据:配置数据、应用程序数据、日志记录数据、证书等。通常,应用程序目录默认为以下位置:

C:\ProgramData\CData\Arc

可将应用程序目录配置为不同的文件夹,这在多种情况下很有用:

  • 聚集知行之桥的多个实例
  • 使用共享的网络驱动器存储应用程序数据
  • 将知行之桥嵌入访问相同文件夹的其它系统中

更改应用程序目录将移动应用程序的数据文件,但不会移动其它应用程序资源,例如 .exe,.jar 等。

更改应用程序目录

应用程序目录是在安装目录 www 文件夹中的 Web.Config 文件中配置的。

该文件包含一个注释掉的 AppDirectory 块,该块描述了以下 appSettings 标记。所需应用程序目录的路径应通过 appSettings 设置为 ‘AppDirectory’ 键。

可以将应用程序目录设置为应用程序具有读写权限的任何本地或网络路径。

配置应用程序数据库

知行之桥的应用程序数据库存储多个应用程序数据表,其中包括:

  • 事务日志(应用程序处理的每个事务的元数据)
  • 应用程序日志(应用程序级错误和事件)
  • 访问日志(对应用程序的 Web 接口的请求)
  • 审计日志(用户对 Arc 配置的更改)

默认情况下,知行之桥使用安装目录中的 SQLite 数据库作为应用程序数据库,也可将其配置为SQL Server,PostgreSQL 或者 MySQL之类的企业数据库。

应用程序数据库在安装目录的“www”文件夹中的 Web.Config 文件中配置。 此文件包含一个注释掉的 AppDb 块,它描述了以下 connectionStrings 标记。 目标数据库的连接字符串和提供程序名称应在“AppDb”键中设置。

设置连接字符串

以下部分提供了 Web.Config 文件中各种服务器配置的示例连接字符串。 可以以明文形式设置这些值,或者可以生成加密的连接字符串 以用于 connectionString 值。

SQL Server

<connectionStrings>
   <add name="AppDb" connectionString="server=localhost;database=sqlserver;user=MyUserName;password=MyPassword;" providerName="System.Data.CData.SQL" />
</connectionStrings>

注意:为了减少使用 SQL Server 作为应用程序数据库时出现死锁的可能性,建议确保启用 READ_COMMITTED_SNAPSHOT。

MySQL

<connectionStrings>
   <add name="AppDb" connectionString="server=localhost;database=appdb;user=MyUserName;password=MyPassword;" providerName="System.Data.CData.MySQL" />
</connectionStrings>

PostgreSQL

<connectionStrings>
  <add name="AppDb" connectionString="server=localhost;port=5432;database=postgres;user=postgres;password=MySecretPassword;" providerName="System.Data.CData.PostgreSQL" />
</connectionStrings>

生成加密的数据库连接字符串

知行之桥提供为你的应用程序数据库连接生成加密连接字符串的能力。 你可以使用此加密连接字符串来指定应用程序数据库,而无需将你的登录凭据以明文形式存储在知行之桥配置文件中。 要生成加密的连接字符串,请在 CData.Arc.exe 所在的安装目录中发出以下命令,将你的连接信息替换为末尾的示例字符串:

CData.Arc.exe -EncryptConnectionString server=serverName;database=databaseName;user=userName;password=passwordSample;

发出命令后,命令窗口会打印加密字符串。 例如:

ENCRYPTEDA:XuUY73BQHKdzWn52z6AqLvZ7uG6jlwkcsQL8yGM8sQ2Znfm1HwG6BpH+LP92mGBBCQX2/IWMal2V5a1AujfltOwResXjAijDzxJ7JmvgUt4=

然后,你可以使用此加密字符串代替 connectionString 的明文值,如 如上所示

登录锁定

知行之桥 会自动锁定输入错误密码次数过多的用户,以防止暴力攻击。 默认情况下,如果用户在 5 分钟内输入 6 次错误密码,则在第 7 次尝试失败时将被锁定 30 分钟。

可以通过编辑安装目录的 www 文件夹中的 Web.Config 文件来修改这些设置。 有 3 个与锁定相关的设置:

  • LockoutFailedAttempts: 将触发锁定的错误密码的数量(将此设置为 0 会禁用锁定)
  • LockoutMinutes: 锁定的持续时间(默认 30 分钟)
  • LockoutTimeCheckPeriod: 失败尝试次数重置为 0 的时间段(默认为 5 分钟)

其中每一个都可以在 Web.Config 文件中的 <appSettings> 标签下设置。 例如,以下代码片段禁用锁定:

<appSettings>
     <add key="LockoutFailedAttempts" value="0"/>
</appSettings>