.NET连接SAP系统专题:C#调用RFC代码出现的异常(转)

 这些天要做一个小项目——用Windows服务调用SAP接口获取数据。网上百度之,确定了方案——用SAP .NET Connector 3.0来与SAP系统交互。用Win7 Ultimate,Visual Studio 2010 Ultimate——于是,我就想用.NET Framework 4.0——于是就有了后来的那个烦人的异常~~~(有时候用最新的东西风险还是不小的)。

  我是把与SAP接口交互的业务逻辑写在一个类库项目中,生成dll后供Windows服务调用。当我安装完服务后,看输出的跟踪日志,看到了异常信息——“SAP.Middleware.Connector.RfcDestinationManager”的类型初始值设定项引发异常。TAT~~

 

 1 ///<summary>

 2 /// 获取RFC连接目标

 3 ///</summary>

 4 private RfcDestination GetDestination()

 5 {

 6   try

 7   {

 8    var destinationName = "lgdderp";//SAP系统标识

 9    IDestinationConfiguration destinationConfiguration = new SAPConfiguration();

10    RfcDestinationManager.RegisterDestinationConfiguration(destinationConfiguration);//这里就引发了那个讨厌的异常~

11    /*返回指定名称的目标对象。RfcDestinationManager会检查目标对象是否已经创建,如果未创建,则向配置对象请求必要的登录参数并创建目标对象。若配置对象未被应用程序注册,则会抛出异常。*/

12    RfcDestination rfcDestination = RfcDestinationManager.GetDestination(destinationName);//

13    RfcDestinationManager.UnregisterDestinationConfiguration(destinationConfiguration);

14    return rfcDestination;

15  }

16     catch (Exception ex)

17     {

18        Logger.Log("获取SAP连接目标时发生异常:" + ex.Message);

19        return null;

20     }

21}

 

  于是我新建一个测试项目,用VS里面的测试项目(好像要安装Resharper 6.0哦~)来调用dll,嘿,居然能够运行正常,用Winform调用时却又引发了异常——头大啊!去调试,跑到上面所示代码的第10行,就出现异常了~~……后来,去看了异常里面的那个InnerException的信息——“混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在4.0 运行时中加载该程序集”。OMG,灵感终于出现,也许是运行时版本兼容的问题。于是百度之:http://www.2cto.com/kf/201111/109736.html, 照着修改后,在Winform里面没问题了。可是!可是Windows服务里面还是报那个异常——虽然我也把服务项目里面的那个app.config文件修 改了!好吧,换FR版本——换成3.5吧~……终于改完,安装,查看输出日志——OK!好了。

posted @ 2012-10-17 16:10  神经衰弱  阅读(497)  评论(0编辑  收藏  举报