一、数据源连接失败
异常描述:使用CityMaker Server服务进行查询或其他操作时,如featureclas.search(null,true),会抛出如下异常信息:
捕捉到COMException
[FdeException] Code: -2017; Message: to connect datasource failure; NativeCode: 0;
数据源连接建立方式:
public IDataSource FdbDataSource(IConnectionInfo connInfo)
{
IDataSourceFactory dsFac = new DataSourceFactory();
return dsFac.OpenDataSource(connInfo);
}
问题解决:
经反复测试和跟踪发现,使用IDataSource获取数据源连接后是不能断开的,除非要结束整个应用程序。在整个应用程序中都不能调用IDataSource.Close()方法断开连接,即使通过IConnectionInfo重新构建连接也是行不通的,仍然会抛出相应异常。
在使用后通过Marshal.RealseComObject方法释放IDataSource对象是不会引发异常的,只要不调用Close就ok了。
if (ds != null)
{
Marshal.ReleaseComObject(ds);
ds = null;
}