【问题标题】:RFC Exception returning empty string C#RFC Exception 返回空字符串 C#
【发布时间】:2013-01-08 13:20:13
【问题描述】:

我使用 RFC_READ_TABLE 将数据输出到我的软件,但是很多时候当 RFC 返回和异常时,它没有返回描述。例如,搜索不存在的表或查询大量列。它总是返回相同的标题 RfcAbapException,没有细节也没有 InnerException。

我的项目中引用的 SAP dll 是 2.0 版。

编辑:

所以问题是:为什么不返回异常详细信息?

【问题讨论】:

  • 要纠正这个问题。但问题是:为什么不返回异常详情?
  • 您必须向我们展示代码。
  • 如果 SAP dll 中抛出异常,我将如何向您显示代码......
  • 似乎异常处理不佳,或者您在读取异常时遗漏了一些位。如果是异常处理不佳,则需要询问引发异常的 API 开发人员
  • 那么,我认为已经使用过 SAP dll 的任何人都有这个问题吗?因为是 SAP 出售的通用 dll 引发了异常。

标签: c# exception abap sap-dotnet-connector


【解决方案1】:

请检查您的系统中是否存在与异常相关的短转储(事务ST22)。如果有的话,这或多或少是设计使然。正如我试图在this answer 中解释的那样(虽然没有详细说明),短转储使ABAP 处理器处于无效状态。它要么无法将任何类型的消息返回给调用者,要么将任何数据返回给调用者是不明智的,因为它可能是无效的甚至是安全问题。在这种情况下,调用将简单地失败并显示未指定的错误消息。 Hogan 在另一个答案中提到的代理异常代码在这种情况下不会有任何帮助,因为它们仅针对 RFC 模块的命名异常生成,而不是基本系统或编程错误。

【讨论】:

    【解决方案2】:

    据我所知,RfcAbapException 中没有包含任何描述。而是返回一个可以解码的代码。像这样:

    catch (RfcAbapException ex)
       {
       switch (ex.AbapException)
         {
       case (SAPProxy1.No_Function_Found):
          MessageBox.Show("abap call failed because no function found");
          break;
       case(SAPProxy1.Nothing_Specified):
          MessageBox.Show("abap call failed because nothing specified");
          break;
       default:
          MessageBox.Show("Some unknown abap error occurred (" 
                           +ex.AbapException.ToString()+")");
          break;
         } //switch
    }
    

    original source

    【讨论】:

    • 一切都很好。整个公司都没有任何关于这件事的文件。谢谢,这将挽救我的生命。这真的很有帮助。谢谢。
    • @vwegert - 当nw 在链接中为大写时,您的浏览器是否真的做了不同的事情?我的头脑被炸毁了。
    • 我还有两个问题,RfcAbapException.AbapException 返回一个空字符串,我不知道 SAPProxy1 来自哪里。第二个问题我可以搜索并尝试解决。第一个我仍然有想法。
    • @vwegert - 我当然知道,我的意思是:情况对浏览器无关紧要,对服务器很重要(在本例中为 help.sap.com)。由于该服务器不关心字母大小写(至少在我查询它时),我对您遇到的问题感到震惊和沮丧。我对原因的最佳猜测是您遇到了中间人攻击,而您实际上并没有使用 help.sap.com 上的服务器。
    猜你喜欢
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    相关资源
    最近更新 更多