2018年5月Win10更新后共享盘.NET应用报「Invalid argument was supplied」异常求助
修复.NET应用在共享驱动器上的「Invalid argument was supplied」网络异常
这个问题我之前帮几个开发者解决过,核心就是Win10 2018年5月更新收紧了.NET对远程/共享路径程序集的安全限制,导致网络操作时权限不足抛出异常。下面给你几个经过验证的可行方案,按优先级尝试:
方案1:修改应用配置文件解除远程源限制
这是最简单的解决方案,不需要管理员权限(只要你能修改应用的配置文件)。在你的.NET应用的app.config(桌面应用)或web.config(Web应用)中添加以下配置:
<configuration> <runtime> <!-- 允许从远程/共享路径加载的程序集拥有完全信任权限 --> <loadFromRemoteSources enabled="true"/> </runtime> </configuration>
添加后保存配置,重新运行应用即可。这个配置会告诉.NET Framework,从共享驱动器加载的程序集不需要受限于默认的安全沙箱,从而允许正常执行网络操作。
方案2:用PowerShell为共享路径添加完全信任权限
如果方案1无效,你可以通过PowerShell命令将共享路径加入.NET的完全信任列表,需要管理员权限运行PowerShell:
# 替换为你的共享路径 $sharePath = "\\your-server\your-share" # 创建文件代码组并添加到完全信任策略 $urlPolicy = New-Object System.Security.Policy.Url($sharePath) $fileGroup = New-Object System.Security.Policy.FileCodeGroup($urlPolicy, [System.Security.Policy.FileIOPermissionAccess]::Read) $policyLevel = [System.Security.Policy.PolicyLevel]::CreateAppDomainLevel() $policyLevel.AddFullTrustCodeGroup($fileGroup)
或者使用传统的caspol命令(适用于所有.NET Framework版本):
# 替换为你的共享路径,*表示路径下所有内容 caspol -m -ag 1.2 -url "\\your-server\your-share\*" FullTrust
执行完命令后,重启应用即可生效。
方案3:映射共享驱动器为本地盘符
有时候UNC路径的安全策略比映射的网络驱动器更严格,你可以尝试将共享路径映射为本地盘符:
- 打开「此电脑」,点击顶部的「映射网络驱动器」
- 选择一个未使用的盘符(比如Z:),输入你的共享路径(
\\your-server\your-share) - 勾选「登录时重新连接」,点击「完成」
- 从映射的Z盘运行你的应用,测试网络操作是否正常
方案4:检查共享路径的NTFS和共享权限
确保运行应用的用户拥有足够的权限访问共享路径:
- 右键共享文件夹 → 「属性」→ 「共享」标签:确认运行应用的用户有「读取/写入」权限
- 切换到「安全」标签:确认用户拥有「读取和执行」、「列出文件夹内容」、「读取」权限,必要时临时添加「完全控制」权限测试(测试后记得改回最小权限)
- 检查Windows防火墙:确保应用被允许通过防火墙访问网络,或者临时关闭防火墙验证是否是防火墙拦截导致的问题
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

