当前位置:编程学习 > C#/ASP.NET >>

(急!!!)用VS2008创建了个网站,连接DB2数据库,编译的时候可以运行,发布之后连接报错?

“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

尝试读取或写入受保护的内存。这通常指示其他内存已损坏。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

源错误: 


行 14:         {
行 15:             DB2Connection DB2Connection = new DB2Connection(System.Configuration.ConfigurationManager.AppSettings["DB2ConnString2"].ToString());
行 16:             DB2Connection.Open();
行 17:             //try
行 18:             //{
 

源文件: E:\工作金碟\工作\项目\进行中项目\中烟\RptWEB\SFL\IBMDB2Helper.cs    行: 16 

堆栈跟踪: 


[AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。]
   IBM.Data.DB2.a.SQLConnectADONET(IntPtr A_0, IntPtr& A_1, ao* A_2, IntPtr& A_3, a4& A_4) +0
   IBM.Data.DB2.h.a(String A_0, IsolationLevel A_1, Int32 A_2, DB2Connection A_3, Int32& A_4, Int32& A_5) +662

[DB2Exception (0x80004005): ERROR [58005] [IBM][DB2.NET] SQL0902 An unexpected exception has occurred in  Process: 5028 Thread 6 AppDomain: 名称:/LM/W3SVC/3/ROOT-10-130065805101775884
无上下文策略。
 Function: SQLConnect
 CallStack:    在 System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   在 System.Environment.get_StackTrace()
   在 IBM.Data.DB2.DB2ConnPool.a(String A_0, Exception A_1, Boolean A_2)
   在 IBM.Data.DB2.DB2ConnPool.h.a(String A_0, IsolationLevel A_1, Int32 A_2, DB2Connection A_3, Int32& A_4, Int32& A_5)
   在 IBM.Data.DB2.DB2ConnPool.a(DB2Connection A_0, String A_1, a& A_2, Object& A_3)
   在 IBM.Data.DB2.DB2Connection.Open()
   在 LX.DXYJ.SFL.IBMDB2Helper.GetNewConnection() 位置 E:\工作金碟\工作\项目\进行中项目\中烟\RptWEB\SFL\IBMDB2Helper.cs:行号 16
   在 LX.DXYJ.SFL.IBMDB2Helper.ExecuteReader(String commandText) 位置 E:\工作金碟\工作\项目\进行中项目\中烟\RptWEB\SFL\IBMDB2Helper.cs:行号 32
   在 LX.DXYJ.DAL.Common.CommonDal.GetPageList(String action, Int32 pageSize, Int32 curPage, String key) 位置 E:\工作金碟\工作\项目\进行中项目\中烟\RptWEB\DAL\Common\CommonDal.cs:行号 160
   在 LX.DXYJ.BLL.CommonBLL.GetPageList(String action, Int32 pageSize, Int32 curPage, String key) 位置 E:\工作金碟\工作\项目\进行中项目\中烟\RptWEB\BLL\CommonBLL.cs:行号 28
   在 LX.DXYJ.UIL.Default.Page_Load(Object sender, EventArgs e) 位置 E:\工作金碟\工作\项目\进行中项目\中烟\RptWEB\UIL\Default.aspx.cs:行号 19
   在 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
   在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
   在 System.Web.UI.Control.OnLoad(EventArgs e)
   在 System.Web.UI.Control.LoadRecursive()
   在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   在 System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   在 System.Web.UI.Page.ProcessRequest()
   在 System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
   在 System.Web.UI.Page.ProcessRequest(HttpContext context)
   在 ASP.default_aspx.ProcessRequest(HttpContext context) 位置 c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\ecaf3cc2\1d9d81b8\App_Web_8sb4klyu.2.cs:行号 0
   在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   在 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
   在 System.Web.HttpApplication.PipelineStepManager.ResumeSteps(Exception error)
   在 System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb)
   在 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)
   在 System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
   在 System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
   在 System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus& notificationStatus)
   在 System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
   在 System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags) InnerException Message: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。 Check InnerException property for more detail.  SQLSTATE=58005]
   IBM.Data.DB2.DB2ConnPool.a(DB2Connection A_0, String A_1, a& A_2, Object& A_3) +3603
   IBM.Data.DB2.DB2Connection.Open() +610
   LX.DXYJ.SFL.IBMDB2Helper.GetNewConnection() in E:\工作金碟\工作\项目\进行中项目\中烟\RptWEB\SFL\IBMDB2Helper.cs:16
   LX.DXYJ.SFL.IBMDB2Helper.ExecuteReader(String commandText) in E:\工作金碟\工作\项目\进行中项目\中烟\RptWEB\SFL\IBMDB2Helper.cs:32
   LX.DXYJ.DAL.Common.CommonDal.GetPageList(String action, Int32 pageSize, Int32 curPage, String key) in E:\工作金碟\工作\项目\进行中项目\中烟\RptWEB\DAL\Common\CommonDal.cs:160
   LX.DXYJ.BLL.CommonBLL.GetPageList(String action, Int32 pageSize, Int32 curPage, String key) in E:\工作金碟\工作\项目\进行中项目\中烟\RptWEB\BLL\CommonBLL.cs:28
   LX.DXYJ.UIL.Default.Page_Load(Object sender, EventArgs e) in E:\工作金碟\工作\项目\进行中项目\中烟\RptWEB\UIL\Default.aspx.cs:19
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +50
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

 
--------------------编程问答-------------------- DB2ConnString2 的配置是否正确。 打印出来看看 --------------------编程问答-------------------- 是不是你的dll文件是32位的,而部署的机器是64位的? --------------------编程问答-------------------- TO mabaolin:

<add key="DB2ConnString" value="Provider=IBMDADB2.1;Data Source=eashr;Location=10.65.128.173:50001; Persist Security Info=True; Password=db2admin;User ID=db2admin"/>


DB2ConnString2 配置应该没有问题,因为我在VS2008里面调试运行时候就没问题. --------------------编程问答-------------------- TO NqIceCoffee:
关键是我是在本机发布啊 --------------------编程问答-------------------- 没看出什么来,顶~ --------------------编程问答--------------------
引用 4 楼 lixi613 的回复:
TO NqIceCoffee:
关键是我是在本机发布啊

iis 的权限配置了,对目录里的文件夹的完全控制权限。 --------------------编程问答-------------------- 试试设置发布目录权限为everyone,写入读取权限 --------------------编程问答-------------------- 把匿名用户访问权限给开下就ok了 --------------------编程问答-------------------- 在文件夹属性安全里面开匿名用户权限,如果是xp系统的话,那个安全需要设置下才可以找到 --------------------编程问答-------------------- 你先看看
System.Configuration.ConfigurationManager.AppSettings["DB2ConnString2"]
这个是否有值以及是否正确! --------------------编程问答-------------------- 除 --------------------编程问答-------------------- iis没有读取DB2的权限,你编译的时候是vs提供的服务器,不是iis。
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,