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

Windows Server控制台应用偶现程序集加载失败(媒体受写保护)求助

控制台应用偶尔抛出“媒体受写保护”程序集加载异常的原因分析

我有一个运行在Windows Server上的控制台应用,多数情况下运行正常,但偶尔会在执行以下代码将数据库数据读取到DataSet时抛出异常:

adapter.Fill(dataset, "users")

异常提示无法加载文件或程序集(有时为System.Xml,有时为System.Web)或其依赖项,错误信息为**“媒体受写保护(Exception from HRESULT: 0x80070013)”**,且异常很快会自行恢复。相关堆栈跟踪信息如下:

第一种异常堆栈:

Exception : Could not load file or assembly 'System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The media is write protected. (Exception from HRESULT: 0x80070013)   at Oracle.DataAccess.Client.OracleParameter.IsProviderSpecificNullValue(Object value)
   at Oracle.DataAccess.Client.OracleParameter.SetStatus(Int32 arraySize)
   at Oracle.DataAccess.Client.OracleParameter.PreBind(OracleConnection conn, IntPtr errCtx, Int32 arraySize)
   at Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean requery, Boolean fillRequest, CommandBehavior behavior)
   at Oracle.DataAccess.Client.OracleDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)

第二种异常信息:

Exception : Could not load file or assembly 'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. 
The media is write protected. (Exception from HRESULT: 0x80070013)

可能的原因

  • 存储介质的临时访问锁定或写保护:
    程序集文件(如System.Xml、System.Web通常位于GAC或系统目录)可能被系统工具临时锁定,比如杀毒软件的实时扫描、备份程序的文件快照、磁盘整理工具的操作,这些操作会临时给文件加上写保护属性或锁定,导致CLR加载程序集时无法读取/写入相关文件,触发异常。当这些工具操作完成后,锁定解除,异常自行恢复。

  • 程序集影子副本的创建失败:
    .NET CLR加载程序集时会在临时目录(如C:\Windows\Temp或用户临时文件夹)生成影子副本,避免原文件被占用。如果临时目录所在磁盘被临时写保护、磁盘空间不足,或者应用程序对临时目录没有足够的读写权限,会导致影子副本创建失败,抛出“媒体受写保护”的错误。

  • Oracle客户端与.NET的资源冲突:
    从堆栈跟踪看,异常触发于OracleParameter的处理流程中。Oracle.DataAccess.Client组件在处理数据库参数时,可能需要动态加载相关.NET程序集,此时如果Oracle客户端组件与.NET运行时之间存在资源竞争(比如内存不足导致的文件缓存异常),或者Oracle客户端的某些依赖文件被临时锁定,会间接引发程序集加载的异常。

  • 系统级临时资源故障:
    Windows Server的内存不足、磁盘缓存异常,或者系统的I/O子系统临时故障,都可能导致文件访问时出现临时的写保护错误。这类故障通常是瞬时的,系统自行恢复后异常就不再出现。

内容的提问来源于stack exchange,提问作者Robin Sun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:45:14