IPropertySet pPropertySet = new PropertySetClass();
pPropertySet.SetProperty("SERVER", SrvName);
pPropertySet.SetProperty("INSTANCE", string.Format("sde:sqlserver:{0}\\sqlexpress", SrvName));
pPropertySet.SetProperty("DATABASE", DBName);
pPropertySet.SetProperty("USER", UserName);
pPropertySet.SetProperty("PASSWORD", Password);
pPropertySet.SetProperty("VERSION", Version);
pPropertySet.SetProperty("AUTHENTICATION_MODE", authenticateMode);
IWorkspaceFactory pWorkspaceFactory = new SdeWorkspaceFactoryClass();
IWorkspace pWorkspace = null;
EventLog log = new EventLog("Application");
log.Source = "Application";
try
{
log.WriteEntry("Start to open SDE");
pWorkspace = pWorkspaceFactory.Open(pPropertySet, 0);
log.WriteEntry("Success");
}
catch (Exception ex)
{
log.WriteEntry("Exception:" + ex.Message);
throw ex;
}
如果将这个代码运行在2003的IIS6下,这个就会无法连接,同时连接一次后,其他页面就不会再有反应了,因为这个时候负责处理的进程W3wp.exe已经被杀死,并重启,所有连接的各类信息已经全部丢失,所以Web的服务器没有了响应。
如果在Visual Studio.Net 2005下使用调试时将启用VS自带的Web服务器的模拟进程,而这个进程却可以绕过了W3wp的安全检测,或者将IIS6配置成隔离模式下运行,而不是应用程序模式,因为应用程序模式的安全性高很多,而且性能也高些。这个需要在IIS网站的属性的服务面板上进行设置。
在XP的系统中,由于采用的进程是Aspnet_wp.exe.进程来处理.net的Web应用程序,这个就不会发生以上的问题。