You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从IIS迁移至Windows服务后,跨机文件复制时网络模拟失败求助

解决SMB同一用户多连接报错的方案

问题核心原因

尽管IIS和后台服务使用了相同凭据,但外部环境的SMB/域策略更严格,系统会将两个进程的连接识别为独立会话;或是存在未释放的残留连接,触发了Windows SMB默认的单用户单会话限制。

具体解决步骤

  • 清理残留SMB连接
    在运行IIS和后台服务的机器上,执行命令强制断开目标服务器的所有连接:

    net use \\目标服务器地址 /delete /y
    

    先执行net use查看当前所有SMB连接,确认残留会话已被清除后再重试操作。

  • 改用IP地址访问共享资源
    避免使用服务器主机名连接共享,改用目标服务器的IP地址。因为SMB会将主机名和IP视为不同的端点,即使凭据相同也会创建独立会话。例如把\\fileserver\share替换为\\192.168.1.100\share。

  • 严格统一身份上下文
    检查Windows服务和IIS应用池的登录身份:

    • 若使用域账号,确保服务登录身份是完整的域\用户名格式,而非本地账号;
    • 确认IIS应用池的自定义身份与服务账号完全一致,包括密码同步(外部环境可能存在域同步延迟,需手动验证凭据有效性)。
  • 修改目标服务器的SMB配置
    若有权限操作目标共享服务器,修改注册表允许同一用户多会话:

    1. 打开注册表编辑器,定位到HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters;
    2. 新建DWORD值AllowMultipleSessionsPerUser,设置值为1;
    3. 重启LanmanServer服务:
      net stop lanmanserver && net start lanmanserver
      

    这个配置会解除Windows默认的单用户单会话限制,适用于外部环境的严格策略场景。

  • 优化代码中的连接释放逻辑
    在文件复制代码中,每次操作完成后显式断开SMB连接:

    • .NET环境可调用WNetCancelConnection2 API(需P/Invoke);
    • 确保所有文件流、目录对象都已正确关闭,避免连接残留。

内容的提问来源于stack exchange,提问作者Prakhar Londhe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:25:54