我使用以下代码连接到SAP cms服务器以从中获取报告。
using CrystalDecisions.Enterprise;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string username = "user";
string password = "pwd";
string server = "srv_name";
string auth_type = "authType";
// logon
SessionMgr session_mgr = new SessionMgr();
EnterpriseSession boEnterpriseSession = session_mgr.Logon(username , password, server, auth_type);
//boInfoStore = (IInfoStore)boEnterpriseSession.getService("InfoStore");
//boInfoStore = (IInfoStore)boEnterpriseSession.GetService("InfoStore");
// get the serialized session
//string session_str = session.SerializedSession;
// pass the session to our custom bypass page on the CRS
}
}
但是在执行以下代码行时我遇到了下面提到的错误:SessionMgr session_mgr = new SessionMgr();
未处理的类型异常 发生'System.Runtime.InteropServices.COMException' CrystalDecisions.Enterprise.Framework.dll
其他信息:检索组件的COM类工厂 CLSID {6670DE06-3F39-4C5D-9238-71FF984D2654}由于失败而失败 以下错误:80040154类未注册(异常来自 HRESULT:0x80040154(REGDB_E_CLASSNOTREG))。
答案 0 :(得分:0)
根据nobugz的回答这里
https://social.msdn.microsoft.com/Forums/vstudio/en-US/88a6ea68-f476-4231-822f-27fabe59f458/error-80040154-retreiving-com-class-factory?forum=vbgeneral
建议您检查HKCR \ CLSID中的GUID键。如果它不在那里,它可能在另一个文件夹(c:\ windows \ system32 ...)。
另一种方法是使用Regmon进行调试
“它向您展示了您的应用程序如何使用注册表。在您的应用程序上运行它并在客户上运行它并比较两者。”
答案 1 :(得分:0)
尝试:
ISessionMgr sessionMgr = CrystalEnterprise.GetSessionMgr();
IEnterpriseSession enterpriseSession = sessionMgr.Logon("userName", "password", "cmsName", "secEnterprise");
string token = enterpriseSession.LogonTokenMgr.DefaultToken;