SAP исключение пойман это бред

Когда я тестирую на своем локальном компьютере, это английский.

Когда я развернул на веб-сервере, расположенном в HK\China, это бред.

Я уже выкладываю информацию о культуре на английский, все тот же.

Я хочу записать исключение на английском языке, несмотря ни на что, затем показать исключение пользователю соответственно, но не на тарабарщине.

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, Кодировка кодирования, строковый язык-код) в SAP.Connector.Rfc.RfcClient.RfcInvoke(SAPClient proxy, метод String, Object[] methodParamsent.AP.Con.Connect.AP) в SAP-SAP. method, Object[] methodParamsIn) в DrawingReq_BAPI.SAPProxy1.Zats_Create_Sourcelist(строковый материал, строковый завод, строковый Purorg, строковый Valid_From, строковый Valid_To, строковый Vendor_Code) в ComparePrice.btnUpload_Click(отправитель объекта, XXXF): \ ComparePrice.aspx.cs: строка 688

3 ответа

Решение

Мне было сказано использовать SAP .Net Connector 3.0 для вызова этих RFC, и сообщение об исключении было отображено в соответствии с языком, заданным в строке подключения, больше не было ничего лишнего.

Я не знаю, что вы определяете как бред, но из того, что вы описываете, может быть проблема с Unicode / Non-Unicode.

Вы используете TCP / IP-соединение с SM59, верно? Не могли бы вы сделать тест Unicode для этого соединения?

Это, вероятно, не бред, это, вероятно, китайский.

Что касается исключений, переключение потока CurrentUICulture изменит язык, на котором сгенерированы исключения, но это требует, чтобы язык был установлен в операционной системе, в которой работает программа.

Возможно, вам удастся заставить это работать с помощью CultureInfo.InvariantCulture, который использует английский для своей локализации строк.

Другие вопросы по тегам