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
请帮。
当尝试使用connection.CreateFunction()方法使用标准BAPI函数时,我也遇到了同样的问题。这似乎也是随机发生的。
RFCFunction funcModify = _r3Connection.CreateFunction("BAPI_ALM_NOTIF_DATA_MODIFY");
funcModify.Exports["NUMBER"].ParamValue = notifNo.PadLeft(12,'0');
我已经张贴了一张票与博尔德软件,业主ERPconnect。我会张贴任何有用的信息,如果我设法去工作。
对于我的情况,问题与librfc32.dll在SystemWow文件夹中缺失有关,我通过在Windows/Systems文件夹中放置两个librfc dll解决了这个问题:一个为32位,另一个为64位。
我已经参考了下面的链接,它包含了库位置和dll所需的信息:
https://my.theobald - software.com/index.php?/knowledgebase/article/view/71/9/theobald -产品- - - 64位环境中
希望对别人有所帮助。