(急!!!)用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:
关键是我是在本机发布啊 --------------------编程问答-------------------- 没看出什么来,顶~ --------------------编程问答--------------------
iis 的权限配置了,对目录里的文件夹的完全控制权限。 --------------------编程问答-------------------- 试试设置发布目录权限为everyone,写入读取权限 --------------------编程问答-------------------- 把匿名用户访问权限给开下就ok了 --------------------编程问答-------------------- 在文件夹属性安全里面开匿名用户权限,如果是xp系统的话,那个安全需要设置下才可以找到 --------------------编程问答-------------------- 你先看看
System.Configuration.ConfigurationManager.AppSettings["DB2ConnString2"]
这个是否有值以及是否正确! --------------------编程问答-------------------- 除 --------------------编程问答-------------------- iis没有读取DB2的权限,你编译的时候是vs提供的服务器,不是iis。
补充:.NET技术 , ASP.NET