十万火急:一个AO的问题,动态链接库 (DLL) 初始化例程失败,请大家给指点下

minlove99 2004-09-14 09:55:52
我下边的程序运行的一直很好,可最近老是出现错误,其中ESRI.ArcObjects.Core为我引用的一个dll,主要用它来实现朝数据库里进行加点,代码和错误提示如下



using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using ESRI.ArcObjects.Core;

namespace WebApplication1
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面

if(Request.QueryString["x"]!="")
{
try
{
IWorkspaceFactory pWorkspaceFactory;
IFeatureWorkspace pWorkspace;
IFeatureClass pFClass;
string datatable=Request.QueryString["leibie"].Split('-')[0];
string infotable=Request.QueryString["leibie"].Split('-')[1];
pWorkspaceFactory = new AccessWorkspaceFactoryClass();// 此行报错
pWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(@"E:\renfang\data\tree.mdb",0);

pFClass = pWorkspace.OpenFeatureClass(datatable);

IWorkspaceEdit pWorkspaceEdit;
pWorkspaceEdit = (IWorkspaceEdit)pWorkspace;
pWorkspaceEdit.StartEditing(false);
pWorkspaceEdit.StartEditOperation();
IPoint pPnt;
pPnt = new ESRI.ArcObjects.Core.PointClass();// pPnt.X=float.Parse(Request.QueryString["x"]);
pPnt.Y=float.Parse(Request.QueryString["y"]);

IFeature pFeat;
pFeat = pFClass.CreateFeature();
pFeat.Shape = pPnt;
pFeat.set_Value(2,Request.QueryString["name"]);
pFeat.set_Value(5,Request.QueryString["type"]);
pFeat.set_Value(6,Request.QueryString["leibie"]);
pFeat.Store();
pWorkspaceEdit.StopEditOperation();
pWorkspaceEdit.StopEditing(true);
string bb=Request.QueryString["dataid"];
Label1.Text="加点成功";
}
catch(Exception aaa)
{
Label1.Text=aaa.ToString(); }
}
else
{
Label1.Text="对不起,没有传值";
}
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion


}
}

错误如下:
System.IO.FileLoadException: 动态链接库 (DLL) 初始化例程失败。 at WebApplication1.WebForm1.Page_Load(Object sender, EventArgs e) in e:\renfang\adddata\addpoint.aspx.cs:line 52

大家能给指点一下吗?
十万火急,明天要给老板看的
...全文
250 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
如果是全局静态,那要放到applicationbegin里,

不要关闭页面,加载页面有Page.IsPostBack做判断

另外欧对这个AccessWorkspaceFactoryClass所在的dll能否在.net下被加载持怀疑态度,因为rcw和兼容性的缘故,很可能这种数据访问方式无法正确创立
minlove99 2004-09-15
  • 打赏
  • 举报
回复
呵呵,有点豁然开朗了,不过你能说的详细点吗?这样放可以吗?
protected System.Web.UI.WebControls.Label Label1;
protected IWorkspaceFactory pWorkspaceFactory = new AccessWorkspaceFactoryClass();
还是放在Application 里比较好,如果这样,怎么放?

不过即使是这样,我还是有点疑惑,因为我的每一次加点,都是重新加栽这个页面,加完点后,然后在关闭这个页面。如果建立全局变量,可以避免那个错误吗?
对不起,我是一个新手,所以麻烦你了
treeline.fm 2004-09-15
  • 打赏
  • 举报
回复
是否存在数据库占用,导致无法打开的问题?
可以考虑不要每次都建立新的AccessWorkspaceFactoryClass对象,而是全局保留一个,共享使用
minlove99 2004-09-15
  • 打赏
  • 举报
回复
谢谢,我赶紧试下,请全程支持
treeline.fm 2004-09-15
  • 打赏
  • 举报
回复
不好意思,楼上说的“rcw和兼容性”是指什么?

有两种办法:
1。在Page_Load函数里每次先看Application里面有没有已经保存的,没有的话生成,有了就用
ESRI.ArcObjects.Core.IWorkspace _workspace = null;
if(this.Application["Data"] == null)
{
ESRI.ArcObjects.Core.IWorkspaceFactory _factory = new ESRI.ArcObjects.Core.AccessWorkspaceFactoryClass();
this.Application["Data"] = _factory.OpenFromFile("D:\\arcgis\\ArcTutor\\Map\\airport.mdb", 0);;
}
_workspace = this.Application["Data"] as ESRI.ArcObjects.Core.IWorkspace;
...

2。在Application_Start函数里(Global.asax.cs)生成并保存,其它的地方直接使用
Application_Start
{
ESRI.ArcObjects.Core.IWorkspaceFactory _factory = new ESRI.ArcObjects.Core.AccessWorkspaceFactoryClass();
this.Application["Data"] = _factory.OpenFromFile("D:\\arcgis\\ArcTutor\\Map\\airport.mdb", 0);;
...
}

...
//使用...
ESRI.ArcObjects.Core.IWorkspace _workspace = this.Application["Data"] as ESRI.ArcObjects.Core.IWorkspace;
...

2,142

社区成员

发帖
与我相关
我的任务
社区描述
它是一种特定的十分重要的空间信息系统。它是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。
社区管理员
  • 地理信息系统
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧