点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好,
我正在尝试用C#编写一个函数,该函数将返回查询大小。
使用:
- Visual Studio 2015社区版(ver 14.0.25431.01 Update 3)
- Microsoft .NET Framework 4.6.01590
下面是一个简单的函数,该函数应返回处于"正在运行"状态且已运行一个小时以上的实例数。
使用的程序集:
- BusinessObjects.Enterprise.Sdk-版本14.0.2000.0
- BusinessObjects.Foundation.Logging-版本14.0.2000.0
使用BusinessObjects.Enterprise.Framework; 使用BusinessObjects.Enterprise.Infostore 静态无效checkBOv2() { 字符串username =" Administrator"; 字符串密码="密码"; 字符串cmsname =" CMSNODE1:6400"; 字符串authType =" secEnterprise"; 现在的字符串= DateTime.Now.ToString(" yyyy.MM.dd.HH:mm:ss"); 然后字符串= DateTime.Now.AddHours(-1).ToString(" yyyy.MM.dd.HH:mm:ss"); 字符串查询="从CI_INFOOBJECTS,其中SI_INSTANCE = 1且SI_SCHEDULE_STATUS = 3且SI_STARTTIME BETWEEN'之间选择SI_PID,然后+"'AND'" +现在+"'"; IEnterpriseSession ceSession = null; ceSession = CrystalEnterprise.GetSessionMgr()。Logon(用户名,密码,cmsname,authType); 尝试 { IInfoStore iStore =(IInfoStore)(ceSession.GetService(" InfoStore"))); IInfoObjects queryResult = iStore.Query(query); int querySize = queryResult.ResultSize; Console.WriteLine(querySize); } 捕获(异常e) { ceSession.Logoff(); Console.WriteLine(e); } 最后 { 如果(ceSession!= null)ceSession.Logoff(); } }
此刻我收到两个错误:
log4net:ERROR XmlHierarchyConfigurator: 无法创建类型为[BusinessObjects.Foundation.Logging.Log4net.RollingFileAppender,BusinessObjects.Foundation.Logging,版本= 12.0.0.0,文化=中性,PublicKeyToken = 692fbea5521e1304]的Appender [A1]。 报告错误如下。 System.IO.FileLoadException:无法加载文件或程序集" BusinessObjects.Foundation.Logging,版本= 12.0.0.0,Culture = neutral,PublicKeyToken = 692fbea5521e1304"或其依赖项之一。 找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040)文件名:'BusinessObjects.Foundation.Logging,版本= 12.0.0.0,Culture = neutral,PublicKeyToken = 692fbea5521e1304'
设法通过将以下配置信息添加到App.config中来解决上述错误:
即使文件位于bin文件夹中,我也无法解决的第二个错误:
未处理的异常:System.TypeInitializationException:'BusinessObjects.Enterprise.Security.Internal._LogonEx3Proxy'的类型初始化程序引发了异常。 ---> System.IO.FileLoadException:库 ld不会加载文件或程序集" BusinessObjects.Enterprise.Sdk.Ssl.netmodule"或其依赖项之一。 动态链接库(DLL)初始化例程失败。 (来自HRESULT的异常:0x8007045A) 在System.RuntimeTypeHandle.GetTypeByName(字符串名称,布尔throwOnError,布尔ignoreCase,布尔反射Only,StackCrawlMarkHandle stackMark,IntPtr pPrivHostBinder,布尔loadTypeFromP artialName,ObjectHandleOnStack类型) 在System.RuntimeTypeHandle.GetTypeByName(字符串名称,布尔throwOnError,布尔ignoreCase,布尔反射Only,StackCrawlMark&stackMark,IntPtr pPrivHostBinder,布尔loadTypeFromPartia lName) 在System.RuntimeType.GetType处(字符串typeName,布尔throwOnError,布尔ignoreCase,布尔反射Only,StackCrawlMark和stackMark) 在System.Type.GetType(String typeName) 在BusinessObjects.Enterprise.Security.Internal._LogonEx3Proxy..cctor() ---内部异常堆栈跟踪的结尾--- 在BusinessObjects.Enterprise.Security.Internal._LogonEx3Proxy..ctor(IProxyHandler处理程序)处 在BusinessObjects.Enterprise.Security.Internal.LogonService.ensureServiceStub() 在BusinessObjects.Enterprise.Security.Internal.LogonService.userLogon处(字符串用户,字符串密码,字符串身份验证) 在BusinessObjects.Enterprise.Security.Internal.SecurityMgr.userLogon处(字符串用户,字符串密码,字符串aps,字符串socksURI,字符串集群,字符串身份验证) 在BusinessObjects.Enterprise.Framework.Internal.SessionMgr.Logon处(字符串用户,字符串密码,字符串cmsName,字符串身份验证)
我在tomcat Web应用程序中以.asp的形式工作,并且运行成功,但是使用了不同的库。 (我在C#中使用了错误的库?)
<%@页面import =" com.crystaldecisions.sdk.framework.CrystalEnterprise"%> <%@页面import =" com.crystaldecisions.sdk.framework.IEnterpriseSession"%> <%@页面import =" com.crystaldecisions.sdk.occa.infostore.IInfoObject"%> <%@页面import =" com.crystaldecisions.sdk.occa.infostore.IInfoObjects"%> <%@页面import =" com.crystaldecisions.sdk.occa.infostore.IInfoStore"%> <%@页面import =" com.crystaldecisions.enterprise.ocaframework。*"%>
我明白了问题所在-您需要在您的应用程序中引用CrystalDecisions.Enterprise.Framework和CrystalDecisions.Enterprise.InfoStore。 然后,在您的代码中,您只需要"使用CrystalDecisions.Enterprise;"即可。 以便能够与他们两个一起工作。
将它们添加到项目的"引用"部分时,请确保进入每个属性并将"嵌入互操作类型"设置为false。
就最佳做法而言,我将您的代码重写为此:
.NET SDK的大部分基于COM对象,.NET不一定能很好地管理内存。 最佳做法是执行以下两项操作之一:
1。 在"使用"子句中创建对象,以便在超出范围时进行编程以自动对它们调用.Dispose()。
2。 完成后,在对象上显式调用.Dispose()。
我在上面的代码中同时使用了这两种技术。
-Dell
此外,安全性库均已使用4.2 SP4更新。 过去,您可以使用与服务器上的平台版本不同的SDK版本进行连接(不建议这样做,但是可以这样做...)。但是,如果您使用的是4.2 SP4或更高版本, 具有相同版本的SDK以便登录到CMS服务器。
-戴尔
你好,
感谢您对此问题的反馈。
仅更改CrystalDecisions.Enterprise.Framework和CrystalDecisions.Enterprise.InfoStore引用不能解决该问题。
我在这里找到了一些例子:
如果要执行此工作,则必须根据上面的示例更新代码:
但出现以下错误:
将我的本地程序集dll与服务器进行了比较,它们是相同的版本(唯一的区别是服务器在64位上运行)
有什么想法吗?
我已经删除了所有已安装并保留在BI Client库中的SDK。
该应用现在可以使用32位版本运行。
一周热门 更多>