捕获的SAP异常是乱码

本文关键字:异常 SAP | 更新日期: 2023-09-27 18:13:05

当我在本地电脑上测试时,它是英语。

当我部署到位于香港'中国的web服务器时,它是胡言乱语。

我已经把文化信息强制译成英文了,还是一样的

我想用英文记录异常,然后相应地向用户显示异常,而不是乱码。

Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
try
{
    ...
}
catch (SAP.Connector.RfcSystemException rfcSystemException)
{
    LogHandler.LogError(logger, "", rfcSystemException);
    ShowMessage("RfcSystemException", rfcSystemException.Message);
}

消息:物料XXX在YYY工厂未维护

错误码:RFC_ERROR_SYSTEM_FAILURE

来源:SAP.Connector.Rfc

堆栈跟踪:在SAP.Connector.SAPConnection

。ThrowRfcException(RFC_ERROR_INFO_EX rfcerrInfo, Encoding Encoding, String languangeCode)在SAP.Connector.Rfc.RfcClient。RfcInvoke(SAPClient代理,String方法,Object[] methodParamsIn)在SAP.Connector.SAPClient。SAPInvoke(字符串方法,对象[]methodParamsIn)在DrawingReq_BAPI.SAPProxy1。Zats_Create_Sourcelist(String Material, String Plant, String Purorg, String Valid_From, String Valid_To, String Vendor_Code)在ComparePrice。btnUpload_Click(Object sender, EventArgs e) in d:'TFS'XXX'ComparePrice.aspx.cs:line 688

捕获的SAP异常是乱码

可能不是胡言乱语,可能是中文。

对于异常,切换线程CurrentUICulture将改变异常生成的语言,但它确实要求该语言安装在程序运行的操作系统上。

您可以使用CultureInfo来实现此功能。

我不知道你定义的是胡言乱语,但从你的描述来看,它可能是unicode/非unicode的问题。

您正在与SM59使用TCP/ip连接,对吗?你能对这个连接做一个统一码测试吗?

我被告知使用SAP . net Connector 3.0调用这些rfc,捕获的异常消息根据连接字符串中的语言设置显示,没有更多的胡言乱语