news 2026/10/15 6:25:01

Office Online Server 2016中文版部署实战与排坑

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Office Online Server 2016中文版部署实战与排坑

简介:Office Online Server 2016 中文版安装部署详细步骤文档,面向需要在内网搭建在线文档预览与协作环境的 IT 运维人员,帮助从零完成域控搭建、依赖安装、服务配置到网站发布。压缩包仅含 1 个 docx 文件,大小约 2.04MB,全文按阶段组织,便于按顺序执行。文档覆盖部署全程:先通过服务器管理器搭建 AD 域控并升级为域控制器,再使用 PowerShell 命令批量安装 Web Server、.NET Framework 等功能组件,并安装 .NET Framework 4.5.2、Visual C++ Redistributable 等前置软件;随后完成 Office Online Server 主程序与中文语言包安装,执行 New-OfficeWebAppsFarm 等配置命令,最后借助 IIS 添加网站完成发布。文档中还列出了各必备软件的官方下载地址,并对密码设置、DNS 提示无法创建等易错步骤给出了明确提示。针对安装中常见的 DNS 报错、HTTP 访问异常,文档给出了处理办法;此外还介绍了通过 hosting/discovery 与 generate.aspx 页面验证部署是否成功的方法。目前已有 3878 人学习该文档,适合初次部署或需快速查阅排错思路的运维人员作为操作手册。

1. 先搞清楚你要装的是“服务”,不是 Office 桌面软件

某公司想给内部文档系统加在线预览,老板一句话丢过来:能不能打开 Word 不用下载、浏览器直接看?调研一圈后,最省事的方案其实是 Office Online Server 2016——它把 Office 文件渲染成网页,用户根本不用装 Office 套件,服务器部署一次,全公司都能通过浏览器预览 Word、Excel、PPT。这个软件中文版的安装不是“下一步、下一步”那么轻松:服务器要加入域、装齐 IIS 和 .NET 前置角色、准备好 HTTPS 证书,最后还要用 PowerShell 建场。整个流程里,真正劝退人的不是主程序安装,而是环境准备和语言文字这一串细节。下面按准备、安装、建场、验证的顺序,把 Office Online Server 2016 中文版一条龙走完。适合正在搭 SharePoint 的运维,也适合想给自研文档系统加预览能力的后端开发;如果只是本地偶尔看文件,装 LibreOffice 更快,别折腾这套。

2. 环境准备:域、角色、证书,缺一个都装不顺

2.1 为什么 OOS 必须跑在域成员服务器上

Office Online Server 2016 不是一台独立服务器就能随便跑的。它对外提供文档预览服务,对内要和 SharePoint、域账户体系打交道,所以最基础的要求是:这台服务器必须是域成员,而且不能是域控制器。实际部署时我习惯准备两台以上的服务器放负载均衡后面,每台规格不用太夸张,8 核 16G 内存加一块独立的日志盘就够了;单台也能跑通测试,但正式环境建议至少两台,因为文档转换非常吃 CPU。

除了加域,还有几个硬性条件,都是血泪经验换来的:服务器上不能装任何 Office 桌面套件,也不能装 SharePoint;系统盘的临时目录要给足空间,预览文档时 OOS 会先做格式转换,缓存文件经常占用几十 GB;两台服务器的时间必须和域控同步,时间偏移太大会导致 Kerberos 认证出问题,这是很多部署文档不会提的黑匣子。换句话说,这台服务器是“专用角色服务器”,不要顺手当文件服务器或个人办公机用。

2.2 用 Install-WindowsFeature 一次装齐 IIS 与 .NET 角色

OOS 2016 依赖 IIS、.NET Framework 4.5.2 以及一批 Web 功能组件。手动在“添加角色和功能”里逐个勾选很容易漏,我一般直接用 PowerShell 把官方要求的那一组功能装齐,Windows Server 2012 R2 和 2016 都适用。以下命令在管理员 PowerShell 里执行:

Install-WindowsFeature Web-Server, Web-Mgmt-Tools, Web-Mgmt-Console, Web-Scripting-Tools, Web-Windows-Auth, Web-Metabase, Web-Net-Ext45, Web-ISAPI-Ext, Web-ISAPI-Filter, NET-Framework-45-ASPNET, NET-WCF-HTTP-Activation45, Server-Media-Foundation, Web-WebSockets, Web-ASP-NET45 -IncludeManagementTools

这段命令覆盖了 OOS 运行所需的全部核心角色。几个关键参数值得多说一句:Web-Windows-Auth是 Windows 身份验证,不装的话后续场内机器之间互相通信会验证失败;Web-WebSockets用于 WOPI 协议里的长连接,少了它文档预览会出现莫名的断开;Server-Media-Foundation负责音视频文件的解码,PPT 里的嵌入视频能不能预览就看它。-IncludeManagementTools会把 IIS 管理控制台一起装上,方便后面排查站点绑定。

装完之后系统一般会提示重启。重启后还要补一个容易被忽略的依赖:Microsoft Visual C++ 2015 运行库。很多安装失败都是因为这台服务器缺少这个运行库,而安装日志里报的错又跟它毫无关系。补完运行库后,用下面命令快速确认相关功能是不是真的装上了:

Get-WindowsFeature Web-Server, NET-Framework-45-ASPNET | Select-Object Name, InstallState

InstallState显示Installed才代表这一步真正完成。如果显示Removed,多数情况下是刚才没有以管理员身份运行 PowerShell,或者系统更新没有打全。不要跳过后置检查,后面建场失败时你一定会回头怀疑这一步。

2.3 证书先装进“本地计算机”存储

OOS 2016 强制要求 HTTPS,证书是整个安装过程中坑最多的地方。企业内网环境可以申请内部 CA 签发的证书,公网访问场景就用正式证书商的证书。证书的主题必须是你计划给 OOS 使用的访问域名,比如oos.内部域名,如果用 IP 访问或者域名和证书不匹配,浏览器和 WOPI 客户端都会直接拒绝连接。

证书导入这一步是关键。很多人下载证书后习惯双击 pfx 文件直接导入,结果证书被放进了“当前用户”的证书存储,而 OOS 建场时只会去读“本地计算机”的证书存储,于是New-OfficeWebAppsFarm报“找不到证书”。正确的做法是在 mmc 里添加“证书”管理单元,选择“计算机账户”,再把证书导入到“个人”节点下。导入时记得勾选“包含私钥”,没有私钥的证书无法用于 TLS 绑定。

导入后用这条命令检查证书是否就位:

Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Subject -like "*oos*" } | Format-List Subject, Thumbprint, HasPrivateKey

重点看三项:Subject是否包含访问域名,HasPrivateKey必须为True,另外确认商店路径开头是Cert:\LocalMachine而不是Cert:\CurrentUser。证书在后续建场时会按主题名称自动匹配,所以这里的域名一定不能写错,否则建场命令会默默匹配到同名的老证书。

2.4 建场前用一条脚本做环境自检

在安装主程序之前,我习惯先用脚本把环境状态一次性打出来,避免装到一半才发现前置条件没满足。自检项包括:机器是否在域里、IIS 是否安装、.NET 是否启用、443 端口是否被占用、目标磁盘剩余空间。脚本如下:

Write-Host "域状态:" (Get-WmiObject Win32_ComputerSystem).PartOfDomain Write-Host "IIS 功能:" (Get-WindowsFeature Web-Server).InstallState Write-Host "磁盘 C: 剩余:" (Get-PSDrive C).Free / 1GB Write-Host "443 端口监听:" (Get-NetTCPConnection -LocalPort 443 -ErrorAction SilentlyContinue | Select-Object -First 1).State

PartOfDomain为True、Web-Server为Installed、磁盘剩余空间大于 30GB 时,环境就算基本合格。443 端口此时应该是空白的,因为 OOS 还没建场;如果已经有其他站点占用 443,需要先处理掉,否则建场后站点绑定会冲突。做完这一步,再去装主程序,顺利程度会高很多。

3. 主程序与中文语言包安装:双击之外还要跑两条 PowerShell

3.1 挂载镜像,用 setup.exe 完成主程序安装

Office Online Server 2016 的安装介质是镜像文件,下载后先挂载到虚拟光驱,或者解压到服务器本地磁盘。这里不要图省事直接通过网络共享路径运行安装程序,容易因为权限问题中途失败。我用的是服务器本地解压目录,管理员身份打开命令行,进入介质目录后运行setup.exe。

安装向导前半段和普通软件没什么区别,但有两个点值得注意:第一,安装程序会先做环境检测,如果检测到 Office 桌面套件或 SharePoint 组件,会直接红屏中断,并且不给详细原因;第二,安装过程默认会把完整功能装到C:\Program Files\Office Online Server,路径不要改,改路径后续补丁和语言包可能出现匹配问题。

主程序安装完成后需要重启服务器。重启后不要急着配置,先到“控制面板 → 程序和功能”里确认一下,除了 Office Online Server 主程序外,不应该再出现任何 Microsoft Office 相关条目。这一步确认干净了,再进入语言包环节。

3.2 中文语言包要单独装,装完切换机器语言

Office Online Server 2016 主程序默认只有英文界面,中文预览界面要靠语言包。注意,这个语言包不是主程序安装向导里的选项,而是一个独立的安装程序,需要单独下载、单独运行。我踩过的坑是:有人以为装了中文版镜像就等于有中文界面,结果预览界面死活是英文,问题就出在语言包没有装。

语言包的安装同样是在管理员命令行里运行,安装完成后用 PowerShell 把本机语言设置为中文:

Set-OfficeWebAppsMachine -Language zh-cn iisreset

Set-OfficeWebAppsMachine是 OOS 独有的机器级配置命令,-Language zh-cn表示把当前机器的界面语言和默认文档语言设为简体中文。后面接的iisreset是重启 IIS,目的是让新语言配置立即生效。语言包安装顺序我建议放在主程序重启之后、建场之前;如果已经建了场再装语言包,虽然也能补上,但一部分已启动的预览会话会继续显示英文,需要手工回收工作进程才能彻底切换,非常麻烦。

3.3 面板验证:Get-OfficeWebAppsMachine 与语言包清单

主程序和语言包装完后,不要急着进入建场,先用两条命令验证安装结果。第一条检查机器状态:

Get-OfficeWebAppsMachine

正常输出里能看到当前机器的角色、语言、证书绑定等信息。如果这里报错,说明主程序安装不完整,回去重装主程序,不要继续往下走。第二条检查语言包:

Get-OfficeWebAppsInstalledLanguagePack

输出里会列出所有已安装的语言包条目。能看到zh-cn才算真正成功。如果这条命令没有输出任何内容,说明语言包没有装进去,重新运行语言包安装程序。要特别提醒:语言包安装完成后,如果后续重新执行过New-OfficeWebAppsFarm或重置过 IIS,建议再执行一次Set-OfficeWebAppsMachine -Language zh-cn,因为场初始化时有可能把语言配置覆盖回默认值。

4. 用 PowerShell 创建场:New-OfficeWebAppsFarm 参数是重头戏

4.1 New-OfficeWebAppsFarm 常用参数与推荐值

主程序和语言包都装完后,OOS 还处在“未初始化”状态,必须创建一个场才能对外服务。建场命令是New-OfficeWebAppsFarm,核心操作就是配好下表的参数。最容易出错的是区分InternalURL和ExternalURL的语义,前者是场内部机器之间使用的地址,后者是客户端浏览器访问的地址;单机测试场景这两个可以相同。

参数作用推荐值
InternalURL场内部通信地址https://oos.内部域名,必须 HTTPS
ExternalURL客户端访问地址https://oos.公网域名,无外网需求时与 InternalURL 相同
CertificateName证书主题名与证书 Subject 保持一致
CacheSizeInGB文档转换缓存大小20~50,并发高时调大
LogLocation日志目录非系统盘独立目录
OpenFromUrlEnabled允许从 URL 打开文档第三方系统预览时设为$true
OpenFromUncEnabled允许从 UNC 路径打开默认$false,高安全环境保持关闭
TranslationEnabled机器翻译功能国内环境一般设$false

单机测试的完整建场命令我一般这样写:

New-OfficeWebAppsFarm ` -InternalURL "https://oos.内部域名" ` -ExternalURL "https://oos.公网域名" ` -CertificateName "oos.公网域名" ` -CacheSizeInGB 20 ` -OpenFromUrlEnabled:$true ` -OpenFromUncEnabled:$false

命令里的证书名必须能精确匹配到Cert:\LocalMachine\My里的证书主题。OpenFromUrlEnabled在测试第三方文档系统时建议打开,否则通过 URL 方式预览会被拒绝;如果只服务 SharePoint,这个参数可以直接去掉。-CertificateName匹配不到证书时场会创建失败,报错信息会直白地告诉你“找不到证书”,原因八成就是证书存错位置或没有私钥。

4.2 建完场后的 IIS、DNS 与防火墙收尾

OOS 建场成功后,IIS 里会自动创建一个名为OfficeWebApps的站点,监听 443 端口,不需要手工添加新站点。很多人习惯手动去“默认网站”里加绑定,结果反而把自动站点搞乱。正确姿势是:建场完先检查 IIS 站点列表,确认OfficeWebApps站点处于“已启动”状态,再处理网络层。

端口占用检查用NetTCPConnection或netstat都行,命令行直出的结果更直观:

netstat -ano | findstr :443

如果 443 被其他进程占用,优先停掉那个站点或服务。接着放行防火墙,单台测试环境加一条入站规则即可:

New-NetFirewallRule -DisplayName "OOS HTTPS 443" -Direction Inbound -LocalPort 443 -Protocol TCP -Action Allow

DNS 解析看你的访问场景:内网使用就把oos.内部域名解析到 OOS 服务器 IP;公网访问则把公网域名解析到负载均衡器或映射到对应公网 IP。负载均衡做健康检查时,健康检查 URL 填https://oos域名/hosting/health,检查频率建议 5 秒一次,超时设为 3 秒,这样后端节点异常时能及时摘除。

4.3 接 SharePoint 或自定义系统的两种对接路径

OOS 本身不提供文档管理界面,它只是一个转换和渲染服务,必须和前端系统对接。最常见的对接对象是 SharePoint:在 SharePoint 服务器上执行绑定命令,让 SharePoint 自动发现 OOS 节点。命令如下:

New-SPWOPIBinding -ServerName "oos.公网域名"

执行完可以再用Get-SPWOPIBinding查看绑定状态。SharePoint 通过 WOPI 协议与 OOS 通信,文档库里的 Office 文件会直接走浏览器预览。

如果对接的是自研系统,最简单的预览方式是 iframe 嵌入 OOS 的view.aspx端点,文档地址放在src参数里并做 URL 编码。假设你的文档链接是https://内部站点/doc.docx,预览页地址就是:

https://oos.公网域名/op/view.aspx?src=https%3A%2F%2F内部站点%2Fdoc.docx

注意这里src指向的文档地址必须也是 HTTPS 可访问的,而且 OOS 服务器要能访问到那个地址,否则预览页面会一直转圈。OpenFromUrlEnabled必须为$true,否则返回错误。这个方式是 OOS 最轻量的接入方案,不涉及复杂协议,适合快速验证链路。

5. 最容易翻车的 5 个安装坑与排查思路

5.1 现象:装完主程序,建场时提示无法初始化

主程序明明安装成功,但执行New-OfficeWebAppsFarm时报“场初始化失败”或直接提示环境不满足。检查了域、IIS、证书都没问题,最后才发现服务器上装过 Office 桌面套件。OOS 对这种事是零容忍的,安装程序和建场命令都会检测桌面 Office 组件。

原因很简单:OOS 官方规定它必须运行在专用服务器上,任何 Office 桌面产品都会造成文件类型关联和组件冲突。解决方法是彻底卸载桌面 Office,包括 Office 全家桶、Visio、Project 这类关联产品,卸载后重启服务器再重跑建场命令。如果卸载不干净,可以用“控制面板 → 程序和功能”确认列表里已经没有 Microsoft Office 相关条目。这个坑是最难发现的,因为报错信息里不会写“检测到 Office”。

5.2 现象:New-OfficeWebAppsFarm 报“找不到证书”

命令执行时报错信息明确提到证书找不到,但证书明明已经在 mmc 里能看到。这种情况多数是证书导入到了当前用户存储,而不是本地计算机存储。OOS 建场只读取Cert:\LocalMachine\My,你看到的证书和它看到的不是同一个地方。

解决方法是把证书迁移到机器存储。如果原来只有 pfx 文件,直接重新导入到“本地计算机”即可;如果证书已经在当前用户存储里,可以用 mmc 导出再导入,或者用 PowerShell 迁移:

$cert = Get-ChildItem Cert:\CurrentUser\My | Where-Object { $_.Subject -like "*oos*" } | Select-Object -First 1 Export-Certificate -Cert $cert -FilePath .\temp.cer Import-Certificate -FilePath .\temp.cer -CertStoreLocation Cert:\LocalMachine\My

这里有一个容易忽略的前提:原证书必须带有私钥,否则导出再导入后HasPrivateKey仍是False。带有私钥的标准做法是导出 pfx 格式,再导入机器存储,导入时勾选“允许导出私钥”。

5.3 现象:健康检查页面 403 / 404

建场完成后访问https://oos域名/hosting/health,返回 403 或 404,而服务器本机访问https://localhost/hosting/health时一切正常。这个现象说明服务本身是健康的,问题出在访问路径或域名解析上。

原因大部分集中在三处:一是外部域名解析指向了负载均衡器或网关,而不是 OOS 服务器;二是 IIS 里OfficeWebApps站点绑定的域名和访问域名不一致;三是证书域名和访问域名不匹配,浏览器或 HTTP 客户端因为 TLS 校验失败直接返回 403。排查顺序建议先在本机 hosts 文件里把域名指向 OOS 服务器 IP,用浏览器访问;通了再逐步检查 DNS、防火墙和负载均衡规则。健康检查页能返回 200,是判断服务是否正常的最快手段。

5.4 现象:中文界面死活不生效

语言包装了,Get-OfficeWebAppsInstalledLanguagePack也能看到zh-cn,但预览文档时右键菜单、工具栏、加载提示还是英文。这个坑我修过很多次,原因一般有两个:一个是机器语言没切到中文,另一个是浏览器请求语言优先级问题。

处理方式分两步。第一步在服务器上重新执行语言设置命令:

Set-OfficeWebAppsMachine -Language zh-cn iisreset

第二步看浏览器发送的Accept-Language请求头。如果浏览器首选语言是英文,OOS 会按英文渲染界面,即使服务器语言是中文也一样。Chrome 里把语言优先级改成“中文(简体)”后,再刷新预览页就能看到中文界面。这个和服务器配置没关系,属于客户端语言协商机制,别在服务器上反复折腾。

5.5 现象:外网打不开,内网正常

内网访问预览一切正常,切到外网环境就打不开页面,常见的反应是把锅甩给 OOS,实际上问题几乎都在网络链路。内网能访问说明 OOS 服务和站点绑定是对的,外网失败要从 DNS 到防火墙逐层排查。

第一步确认外网域名解析到正确的公网入口;第二步确认公网入口到 OOS 服务器的端口映射放行 443;第三步确认 OOS 服务器本地防火墙允许来自公网网段的 443 入站连接;第四步确认ExternalURL参数值就是外网访问域名,同时证书 SAN 里包含这个外网域名。内网正常并不代表外网一定正常,ExternalURL配置错误会导致 WOPI 回调地址全是内网地址,浏览器拿着内网地址自然打不开。

6. 装完怎么验:健康检查、语言验证与一份真实文档

6.1 Test-OfficeWebAppsFarm 和 hosting/health 怎么看

建场完成后,第一件事是跑场健康检查命令:

Test-OfficeWebAppsFarm

命令会遍历场内所有服务器和缓存角色,输出每一项的检查结果。重点关注HealthResult里有没有非 0 状态,一般常见警告集中在三个方面:证书即将到期、磁盘剩余空间不足、缓存驱动不在线。证书还有一两个月到期时,Test-OfficeWebAppsFarm会给出黄色警告但服务仍可用,别等它变成红色才换证书。

浏览器直接访问健康页也很有用:访问https://oos域名/hosting/health,返回 200 说明服务进程和 HTTPS 绑定都没有问题。这个页面是负载均衡健康检查的标准路径,也是后续日常巡检的首要指标。

6.2 用一份真实 docx 走完预览流程

命令检查只能证明服务“活着”,文档能不能真正渲染出来,还得拿真实文件测试。测试文档建议用 Word、Excel、PPT 各准备一份,不要拿 PDF 当验收标准,PDF 预览依赖另外的组件,不在这次部署范围内。

访问方式用最直接的view.aspx端点。先执行下面的命令获取 OOS 的发现信息:

Invoke-WebRequest "https://oos域名/hosting/discovery" -UseBasicParsing | Select-Object -Expand Content

返回的 XML 里能看到一组 app 条目,其中Document_conversion就是文档格式转换的入口。随后把测试文档放到一个 OOS 服务器能访问的 HTTPS 地址,浏览器打开预览页:

https://oos域名/op/view.aspx?src=<url编码后的文档地址>

页面能把 docx 内容渲染出来,说明从 URL 打开到格式转换的整条链路已通;再确认一下界面语言,右键菜单是中文就说明语言包和语言切换全部生效。这一套走完,Office Online Server 2016 中文版从服务器准备到业务交付才算真正完成。

我每次搭完这套环境,都会顺手在服务器上留一个部署记录,把证书到期时间、语言包版本、DNS 指向写清楚。原因很简单:OOS 平时不怎么需要碰,但一旦文档预览出问题,最先要被盘问的就是这几个基础配置。有个记录,排查时能省下一个下午。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 6:24:04

PSCAD雷电波仿真建模全解析:双指数波、参数设置与工程避坑指南

简介&#xff1a;在PSCAD/EMTDC环境下开展雷电波模拟的专题资料&#xff0c;面向电力系统设计、过电压防护与电磁暂态分析方向的工程师、科研人员及高校师生。文档以GB18802标准中浪涌保护器&#xff08;SPD&#xff09;的I级&#xff08;50kA冲击电流&#xff0c;1.2/50波形&a…

作者头像 李华
网站建设 2026/10/15 6:23:34

A*寻路算法设计与实现:从地图建模到可视化调试全流程复盘

寻路算法&#xff0c;尤其是A算法&#xff0c;一直是很多同学毕业设计选择的经典题目。我自己的毕设课题就是“基于A的寻路算法设计与实现”&#xff0c;听起来不算新潮&#xff0c;但真正把地图建模、启发函数、路径平滑和可视化串在一起做完&#xff0c;才发现里面的坑远比教…

作者头像 李华
网站建设 2026/10/15 6:23:26

SAP CPI入站SFTP轮询集成实战:从连接到归档的完整指南

做集成这行&#xff0c;被问得最多的需求之一就是“文件怎么从对方服务器拿过来”。最近在某个制造企业的数据集成项目里&#xff0c;我接到一个很典型的任务&#xff1a;客户每天早上把当天订单明细上传到外部 SFTP 服务器&#xff0c;我需要用 SAP Cloud Integration 把这个目…

作者头像 李华
网站建设 2026/10/15 6:23:13

PyTorch核心机制与实战:从动态图到训练调优全解析

我一直觉得&#xff0c;PyTorch 最大的魅力&#xff0c;是它把深度学习从“写框架代码”变成了“写 Python 本身”。你要是现在问我&#xff0c;做深度学习到底该从哪个框架入手&#xff0c;我的答案几乎不需要犹豫&#xff1a;PyTorch。不管你是刚接触神经网络的学生&#xff…

作者头像 李华
网站建设 2026/10/15 6:23:12

TensorFlow踩坑记:从环境配置到模型部署的实战指南

提到TensorFlow&#xff0c;很多刚接触深度学习的朋友第一反应往往是“这玩意儿学起来好复杂”&#xff0c;而我的经历更戏剧——第一次装TensorFlow就失败&#xff0c;连续折腾了两天愣是没跑起来一个简单的示例。后来因为项目需要不得不硬着头皮重新捡起来&#xff0c;才逐步…

作者头像 李华
网站建设 2026/10/15 6:22:42

PyTorch核心机制与实战:从动态图到模型部署一次讲透

不用再重复 PyTorch 的基础教程了&#xff0c;网上到处是。但你会发现一个现象&#xff1a;很多人装好环境、照着官方文档跑通几个 Demo 之后&#xff0c;一进真实项目就开始卡壳——要么模型训练速度上不去&#xff0c;要么换个数据集就报一堆看不懂的错&#xff0c;要么折腾到…

作者头像 李华