使用内置服务器
本节说明如何配置独立的内置 Web 服务器,包括如何托管 SSL/TLS 连接以及配置云网关(反向 SSH 隧道)。 托管在内置服务器上时,应用程序可以作为 Windows 服务运行:- 右键单击任务栏中的 图标,然后单击 服务器选项。
- 选择 作为 Windows 服务运行。
- 保存更改。
如果需要在 Connections 系统设置 页面上安装 驱动程序,并在安装过程中遇到权限错误,请为知行之桥服务账户(默认是 Network Service)授予对
www\Web.Config 和 www\bin 的 write 权限。托管 TLS/SSL 连接(内置服务器)
您可以要求使用 TLS,也可以继续以明文形式提供服务。本节介绍如何在 Windows 版应用程序随附的内置服务器中托管 TLS/SSL 连接。若要为 Java 版本部署 TLS/SSL,请参阅用于托管应用程序的 Java servlet 文档。- 右键单击 Windows 系统托盘中的应用程序图标,然后单击 服务器选项。
- 在 Web 服务器选项卡上,选择 启用 TLS,并选择要监听 TLS 连接的端口。
-
单击 TLS 服务器证书 框旁边的按钮以选择私钥证书。带私钥的证书必须安装到本地计算机证书存储区。如果没有符合条件的可用证书,请单击 创建新证书 来为此用途创建一个简单证书。

管理个人证书
证书选择对话框中可用的证书位于本地计算机的 “个人”证书存储区。若要将证书添加到 Windows 存储区:- 在“运行”菜单中输入 mmc 以启动 Microsoft 管理控制台。
- 单击 文件 > 添加/删除管理单元。
-
从可用管理单元表中选择 证书,然后单击 添加。

- 选择 计算机账户 > 本地计算机。
- 添加管理单元后,单击 证书(本地计算机)> 个人 > 证书 以显示可用证书。可使用私钥的证书会在证书图标上叠加钥匙图标。
- 若要将本地磁盘中的证书导入此存储区,请单击 操作 > 所有任务 > 导入。完成导入向导后,这些证书将在应用程序的证书选择对话框中可用。
云网关
云网关提供了一种简单方式,可在不更改防火墙的情况下将应用程序公开到 Internet。只要有可公开访问的 SSH 服务器, 就可以利用 SSH 反向隧道,通过该 SSH 服务器上的端口进行访问。 若要使用此功能,请右键单击系统托盘中的应用程序图标并选择 服务器选项。导航到 云网关选项卡(如下所示),并输入以下信息:
此外,您可能需要更改 SSH 服务器的配置以允许端口转发。默认 SSH 服务器配置可能并不总是允许将端口转发到非 localhost 地址。例如,如果连接到 OpenSSH 服务器,则必须在 SSH 服务器配置文件中将 GatewayPorts 属性设置为 yes 或 clientspecified。
输入这些信息后,单击 测试连接 测试与 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。该语法如下图所示。
必须逐个添加用户,因为不能授予整个组访问应用程序的权限。

使用 IIS
支持 IIS 10,并且系统要求指定计算机必须运行 Windows 10 或 Windows Server 2016 或更高版本。如果设置 IIS 时遇到困难,请参阅 IIS 故障排除 部分。如果仍有疑问,请联系我们的支持团队以获得进一步帮助。创建新的 Web 应用程序
此示例使用默认网站。
- 在 IIS 管理器中,展开 连接面板中的服务器节点。
- 展开站点节点,右键单击您的网站,然后单击 添加应用程序。
- 在显示的 添加应用程序 对话框中输入以下信息:
配置目录权限
应用程序必须对 应用程序目录具有完全访问权限,才能使用完整功能。 在 ArcESB 2021 及更早版本中,应用程序目录和安装目录相同,默认是C:\Program Files\ArcESB\。如果您从 的旧版本升级到 20,这很可能仍是您的应用程序目录。
在 2021 中,应用程序目录从安装目录中分离出来。安装目录现在是 C:\Program Files\CData\CData Arc。应用程序目录现在是 C:\ProgramData\CData\Arc\。
应用程序目录包含以下文件夹:
- connectors
- data
- db
- locks
- logs
- schemas
- workspaces
- 程序可执行文件(
CData.Arc.exe和arc.exe)及配置文件 www文件夹及子文件夹www_services文件夹及子文件夹
- 右键单击该文件夹并单击 属性。在安全选项卡上,单击 编辑 > 添加。
-
在 输入要选择的对象名称 框中输入以下内容,并替换应用程序池名称:
IIS AppPool\[your-application-pool]。例如:IIS AppPool\DefaultAppPool。 -
确保应用程序池具有以下权限:
- 读取
- 写入
- 修改
- 读取和执行
- 列出文件夹内容
也可以使用命令行允许应用程序池访问。例如:
icacls "<application directory>" /grant "IIS APPPOOL\DefaultAppPool":(OI)(M)配置服务器权限
如果使用 sftpserver 或 ftpserver,必须确保应用程序池对为服务器配置的根目录具有正确权限。如果将根目录创建为应用程序目录路径的子目录,则在父应用程序目录及其子文件夹上设置权限通常就足够了。防止卸载应用程序进程
IIS 可能会因多种原因关闭 Web 应用程序,包括超过空闲超时,或判定应用程序池资源使用率过高。这可能会阻止应用程序中的后台任务运行。请通过修改以下设置确保应用程序保持运行:- 启用可选的应用程序初始化功能。 在 Windows Server 2016 中,打开 服务器管理器,然后单击 仪表板 > 快速入门 > 添加角色和功能。此时会打开 添加角色和功能向导。在服务器角色步骤中,单击 Web 服务器 (IIS) > Web 服务器 > 应用程序开发 > 应用程序初始化。 在 Windows 10 中,打开 控制面板,然后单击 程序和功能 > 启用或关闭 Windows 功能。单击 Internet Information Services > 万维网服务 > 应用程序开发功能 > 应用程序初始化。
- 在 IIS 管理器中,单击 连接面板中的 应用程序池。
- 在工作区中,右键单击应用程序池并单击 高级设置。
- 在常规设置中,将 启动模式 设置为 AlwaysRunning。
- 在进程模型设置中,将 闲置超时 设置为 0。
- 在 CPU 部分,将 限制间隔 设置为 0。
- 在回收部分,将 固定时间间隔 设置为 0。
- 在生成回收事件日志条目节点中,在回收部分下,将 固定时间间隔 设置为 False。单击 OK 按钮。
- 返回 IIS 管理器,右键单击您的网站并单击 管理网站 > 高级设置。
- 在常规设置中,将 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 保护与交易伙伴之间关键业务和关键任务通信的机密性。以下步骤假设您已经拥有可用于在服务器上启用 TLS/SSL 的证书。- 在 IIS 管理器中,从 连接窗格单击网站节点。
- 在 操作窗格中单击 绑定。
- 单击 添加并选择 HTTPS。
- 选择服务器证书。
- 如果要要求 TLS/SSL,请在网站节点仍处于选中状态时,在工作区中双击 SSL/TLS 设置图标。选择 需要 SSL/TLS,然后在 操作窗格中单击 应用。
Windows 身份验证
在 IIS 中托管 时,配置 使用 Windows 身份验证与使用 .NET 内置 Web 服务器 时所需的配置类似。不过,此时不是在内置 Web 服务器中进行更改,而是在 IIS 中进行必要更改。 若要在 IIS 中托管 时设置 Windows 身份验证,请执行以下步骤:-
登录 ,并将所有需要访问 的 Windows AD 用户 添加到应用程序。Windows AD 用户名必须使用以下语法:DOMAIN\Username。
必须逐个添加用户,因为不能授予整个组访问应用程序的权限。
- 打开 IIS,停止为 配置的站点。右键单击该站点并选择 管理网站 > 停止。
-
单击 站点以打开 主页。在 IIS 部分下选择 身份验证。
此时会出现一个屏幕,列出一组身份验证方法。右键单击 表单身份验证 并选择 禁用。这会关闭默认的用户名和密码登录身份验证方法。
- 右键单击 Windows 身份验证 并选择 启用。
- 在 IIS 中重新启动您的站点。

IIS 故障排除
以下各节提供了几种常见错误的解决方法。注销一段时间后应用程序停止响应
IIS 可能会在应用程序因不活动而超时后卸载应用程序。默认情况下,IIS 会在应用程序不活动 20 分钟后终止分配给应用程序的工作进程。请参阅 防止卸载应用程序进程,了解如何覆盖此功能。访问 http://localhost/application 导致“Page Cannot Be Displayed”错误(HTTP 404 错误)
这可能表示 ASP.NET 未启用。如果您可以成功浏览静态图像(如 favicon.ico,例如http://localhost/arc/favicon.ico),但无法浏览 login.rst,则强烈表明 ASP.NET 未启用。
在 IIS 中,选择 Control Panel > Programs (or Programs and Features) > Turn Windows Features On or Off > Internet Information Services > World Wide Web Services > Application Development Features。选中 ASP.NET 旁边的复选框。
该部分在父级被锁定
锁定可能是默认设置(overrideModeDefault="Deny"),也可能由带有 overrideMode="Deny" 的 location 标记或旧版 allowOverride="false" 显式设置。
如果未安装 ASP.NET,可能会出现此错误。
HTTP 503 错误:服务不可用
如果在 IIS 中选择了之前曾与 内置 Web 服务器一起使用的端口,可能会出现此错误。这表示服务未成功启动。IIS 在启动服务时不会报告任何问题,但当您尝试访问站点时会出现此错误。发生这种情况是因为内置 Web 服务器会保留您绑定的任何端口,使其他尝试绑定到该端口的进程无法进行保留。 若要确认问题是否由端口保留引起,请打开命令提示符并运行以下命令:Reserved URL : http://+:8001/),则可以使用另一个 netsh 命令删除该保留(使用 show 列表中的相同值)。例如,以下命令会删除端口 8001 的保留:
管理用户
首次启动 时,它会提示您创建具有用户名/密码凭据的用户。创建第一个用户后,可以在系统设置页面的 用户选项卡上添加、删除和管理用户。 请参阅用户角色以了解有关用户管理和角色的更多信息。配置应用程序目录
应用程序目录包含应用程序使用的所有数据:配置数据、应用程序数据、日志数据、证书等。应用程序目录默认位于以下位置:- 集群多个 实例
- 使用共享网络驱动器存储应用程序数据
- 将 嵌入访问同一文件夹的其他系统中
更改应用程序目录
若要设置自定义应用程序目录,请打开安装目录www 文件夹中的 Web.Config 文件。在文件底部的 <appSettings> 标记内,找到以下值:
value 后引号内的文本替换为新的应用程序目录。这可以是应用程序具有读写权限的任何本地或网络路径。
配置应用程序数据库
应用程序数据库存储多个应用程序数据表,包括:- 事务日志(应用程序处理的每个事务的元数据)
- 应用程序日志(应用程序级错误和事件)
- 访问日志(对应用程序 Web 端点的请求)
- 审计日志(用户对 配置所做的更改)
出于安全原因,如果您切换到其他应用程序数据库,必须运行 integrityResetTampering 操作来重置哈希链。
www 文件夹中的 Web.Config 文件中配置。该文件包含一个注释掉的 AppDb 块,用于说明后面的 connectionStrings 标记。请在 AppDb 键中设置目标数据库的连接字符串和提供程序名称。
设置连接字符串
以下各节提供了Web.Config 文件中各种服务器配置的示例连接字符串。您可以以明文形式设置这些值,也可以生成加密的连接字符串来用作 connectionString 值。
SQL Server
为降低使用 SQL Server 作为应用程序数据库时发生死锁的可能性,知行软件建议确保已启用 READ_COMMITTED_SNAPSHOT。
MySQL
PostgreSQL
生成加密的数据库连接字符串
提供为应用程序数据库连接生成加密连接字符串的功能。您可以使用此加密连接字符串指定应用程序数据库,而无需在 配置文件中以明文形式存储登录凭据。若要生成加密连接字符串,请在CData.Arc.exe 所在的安装目录中发出以下命令,并将末尾的示例字符串替换为您的连接信息:
connectionString 的明文值,如设置连接字符串中所示。
指定默认字符集(仅限 MySQL)
对于 MySQL 8.0 及更高版本,数据库及其表的默认字符集 (charset) 为 UTF8(具体为utf8mb4)。但是,在 MySQL 8.0 之前的版本中,默认字符集通常为 Latin1,这可能会导致包含基本拉丁字母表以外字符的数据出现问题。
如果使用较旧版本的 MySQL,可以通过将数据库配置为使用 utf8mb4 来避免这些问题。有两种方式可以进行此更改:直接更新现有数据库,或使用 MySQL 的导出和导入工具将数据迁移到新的 UTF8 编码数据库。
直接更新数据库
-
备份数据库:
mysqldump -u root -p --default-character-set=latin1 --databases [database name] > backup.sql -
将默认字符集更改为 UTF8:
ALTER DATABASE [database name] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -
生成 SQL 语句,将所有数据库表的默认字符集更改为 UTF8:
- 执行上一步生成的 SQL 语句。
使用导出和导入工具
-
导出数据定义语言 (DDL) 和数据:
-
将 schemas.sql 中的默认字符集从
CHARSET=latin1更改为CHARSET=utf8mb4。 -
创建一个以 UTF8 为默认字符集的新数据库:
CREATE DATABASE [new database name] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -
导入到新数据库:
设置登录锁定
为防止暴力破解攻击, 会自动锁定输入错误密码次数过多的用户。默认情况下,用户在 5 分钟内输入 6 次错误密码后,第 7 次尝试失败时会被锁定 30 分钟。 您可以通过编辑安装目录www 文件夹中的 Web.Config 文件来修改这些设置。有 3 个与锁定相关的设置:
- LockoutFailedAttempts:触发锁定的错误密码次数(将此设置为 0 可禁用锁定)
- LockoutMinutes:锁定持续时间(默认 30 分钟)
- LockoutTimeCheckPeriod:失败尝试次数重置为 0 的时间段(默认 5 分钟)
Web.Config 文件的 <appSettings> 标记下设置。例如,以下代码片段会禁用锁定: