c# Web API中的AccessViolation异常

本文关键字:AccessViolation 异常 中的 API Web | 更新日期: 2023-09-27 18:08:00

通过c# Web API访问SAP RFC时出现错误。详情如下:我能够从SAP RFC得到响应,这是存储在我们的参数,但它抛出一个异常,同时返回到我的函数。下面是代码:

    internal string FromBupaToBupaGuid(string sBupa)
    {
        using (SAPContext db = new SAPContext(base.GetConnectStringForRfcUser()))
        {
            ERPConnect.LIC.SetLic(base.GetLicenseKey());
            string sBupaGuid;
            SAPContext.MESSAGESTable mESSAGESTable = new SAPContext.MESSAGESTable();
            sBupa = ToBupa(sBupa);
            db.IST_GET_BPARTNER_GUID(out sBupaGuid, sBupa, mESSAGESTable);
            return sBupaGuid;
        }
    }

下面是异常信息:

System.AccessViolationException was unhandled
  HResult=-2147467261
  Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
  Source=ERPConnect40
  StackTrace:
       at ERPConnect.RFCAPI.RfcCallReceiveExt(Int32 handle, Int32 hSpace, String FuncName, StringBuilder Exception)
       at ERPConnect.R3Connection.Ping()
       at ERPConnect.Linq.ERPDataContext.Dispose(Boolean disposing)
       at ERPConnect.Linq.ERPDataContext.Dispose()

注意:代码没有问题,因为它是安静的旧代码,在我以前的机器(Windows 7 + VS 2012)上工作得很好,现在我有Windows 8.1。

我已经试过了:

  • 选中/取消选中- Tools> Options> Debugging> General> Suppress JIT optimization on module load (Managed only)
  • Visual studio 2012和2013都尝试过
  • 。. Net framework版本4.5.2

请帮。

c# Web API中的AccessViolation异常

当尝试使用connection.CreateFunction()方法使用标准BAPI函数时,我也遇到了同样的问题。这似乎也是随机发生的。

RFCFunction funcModify = _r3Connection.CreateFunction("BAPI_ALM_NOTIF_DATA_MODIFY");
                funcModify.Exports["NUMBER"].ParamValue = notifNo.PadLeft(12,'0');

我已经张贴了一张票与博尔德软件,业主ERPconnect。我会张贴任何有用的信息,如果我设法去工作。

对于我的情况,问题与librfc32.dllSystemWow文件夹中缺失有关,我通过在Windows/Systems文件夹中放置两个librfc dll解决了这个问题:一个为32位,另一个为64位。

我已经参考了下面的链接,它包含了库位置和dll所需的信息:

https://my.theobald - software.com/index.php?/knowledgebase/article/view/71/9/theobald -产品- - - 64位环境中

希望对别人有所帮助。