Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 试图读取或写入.NET应用程序中受保护的内存_C#_Asp.net_Oracle10g_Iis 6_Access Violation - Fatal编程技术网

C# 试图读取或写入.NET应用程序中受保护的内存

C# 试图读取或写入.NET应用程序中受保护的内存,c#,asp.net,oracle10g,iis-6,access-violation,C#,Asp.net,Oracle10g,Iis 6,Access Violation,我在IIS 6服务器中实现ASP.Net应用程序时遇到问题 当用户试图打开访问数据库的网页时,iis服务器抛出“试图读取或写入受保护内存”这是堆栈跟踪: System.AccessViolationException:尝试读或写保护 记忆。这通常表示其他内存已损坏。 位于Oracle.DataAccess.Client.OpsPrm.ResetValCtx(opopromvalctx*popopmvalctx,Int32 ctxSize) 在Oracle.DataAccess.Client.Or

我在IIS 6服务器中实现ASP.Net应用程序时遇到问题

当用户试图打开访问数据库的网页时,iis服务器抛出“试图读取或写入受保护内存”这是堆栈跟踪:

System.AccessViolationException:尝试读或写保护 记忆。这通常表示其他内存已损坏。 位于Oracle.DataAccess.Client.OpsPrm.ResetValCtx(opopromvalctx*popopmvalctx,Int32 ctxSize) 在Oracle.DataAccess.Client.OracleParameter.ResetCtx(Int32 arraySize)中 在Oracle.DataAccess.Client.OracleParameter.PreBind(OracleConnection 连接器,IntPtr errCtx,Int32阵列化) 在Oracle.DataAccess.Client.OracleCommand.ExecuteReader(布尔重新查询、布尔填充请求、命令行为) 在Oracle.DataAccess.Client.OracleCommand.ExecuteReader()中 在Oracle.DataAccess.Client.OracleCommand.ExecuteScalar()中 位于Tenaris.FSA.OracleProvider.OracleProvider.ExecuteScalar(String commandToExecute,CommandType CommandType,DbParameter[]参数) 在C:\Congelados FSA\FSA 1er可转口 0505013\Tenaris.FSA.OracleProvider\OracleProvider.cs:第223行 位于Tenaris.FSA.DAC.Providers.DataAccessManager.ExecuteScalar(字符串 commandToExecute、CommandType CommandType、DbParameter[]参数) 在C:\Congelados FSA\FSA 1er可转口 0505013\Tenaris.FSA.DataAccessComponent\Providers\DataAccessManager.cs:line 59 在Tenaris.FSA.DAC.Repository.AppointmentWayClientDAL.GetCountRegisters(布尔值 C:\Congelados FSA\FSA 1er可转口中的仅可转口) 0505013\Tenaris.FSA.DataAccessComponent\Repository\AppointmentWayClientDAL.cs:line 39 位于Tenaris.FSA.BusinessComponents.BusinessProcess.AppointmentWayClientManager.GetCountRegisters(布尔值 C:\Congelados FSA\FSA 1er可转口中的仅可转口) 0505013\Tenaris.FSA.BusinessComponents\BusinessProcess\AppointmentWayClientManager.cs:line 二十八

这是非常罕见的,因为该错误不应该出现在托管代码中,而且该站点的早期版本工作正常。我已经做了几个测试,比如在x86平台的pc上编译应用程序,从功能版本复制了web.config,从功能版本复制了Oracle.DataAccess dll,但是错误仍然显示出来


另一件你应该知道的事是,有一个页面,实际上成功地填写了一个下拉列表,但是页面必须填充gridview,出现上述异常。

系统已耗尽ram来加载它,因此当它试图从其他受保护内存的应用程序中获取更多内存时,因此获取更多ram

我最终可以解决此问题,另一个开发人员在创建OracleParameters时使用了“using”子句,就像:

using(OracleParameter prm = SomeMethodThatCreatesIt(value,paramName))
{
 //extracode
 myCommand.Parameters.Add(prm);
}
因此,代码必须更改为:

OracleParameter prm = SomeMethodThatCreatesIt(value,paramName);
//extracode
myCommand.Parameters.Add(prm);
正如您在stacktrace中所看到的,问题在于参数的某些过程


因此,代码在使用对象之前先对其进行处理。我不明白的是,为什么这在我的测试之一的控制台应用程序中也能工作,但现在它可以工作了,谢谢大家

检查重新启动服务器应用程序(IIS 6服务器上的应用程序)是否会删除此错误。。。。。我也有同样的问题。。。有时会发生这种情况,通过重新启动服务器,错误消失了。