3

DCOM SAPコネクタを介してSAPシステムからデータをフェッチするアプリケーションがあります。最近、.NET コネクタに置き換えました。本番環境にデプロイした後、1 日は機能しました。1 つの RFC にアクセスしているときに、突然指定されたエラーが発生します。例外メッセージは

"SAP.Middleware.Connector.RfcConfigParameters" の型初期化子が例外をスローしました - エラー番号:-2146233036。

SAP.Middleware.Connector.RfcConfigParameters のオブジェクトを作成して使用するコードは以下のとおりです。

string Value1 ="Val1";
string Value1 ="Val2";
string Value1 ="Val3";
string Value1 ="Val4";
string Value1 ="Val5";
string Value1 ="Val6";
string Value1 ="Val7";

RfcConfigParameters parms = new RfcConfigParameters();

parms.Add(RfcConfigParameters.Param1, Value1);
parms.Add(RfcConfigParameters.Param2, Value2);
parms.Add(RfcConfigParameters.Param3, Value3);
parms.Add(RfcConfigParameters.Param4, Value4);
parms.Add(RfcConfigParameters.Param5, Value5);
parms.Add(RfcConfigParameters.Param6, Value6);
parms.Add(RfcConfigParameters.Param7, Value7);

SapRfcDestination = RfcDestinationManager.GetDestination(parms);
RfcCustomDestination customDest = SapRfcDestination.CreateCustomDestination();
IRfcFunction func = customDest.Repository.CreateFunction("RFC_FUNCTION");

func.SetValue("DATA1", "VAL1")
func.SetValue("DATA2", "VAL2")
func.SetValue("DATA3", "VAL3")

RfcStructureMetadata metaData = customDest.Repository.GetStructureMetadata("STRUCTURENAME");
IRfcTable rfcTable = func.GetTable("TABLENAME");

例外情報を追跡しました。以下は例外情報です

System.TypeInitializationException: The type initializer for '<Module>' threw an exception. ---> <CrtImplementationDetails>.ModuleLoadException: The C++ module failed to load.
 ---> System.IO.FileLoadException: Could not load file or assembly 'msvcm80, Version=8.0.50727.6195, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
File name: 'msvcm80, Version=8.0.50727.6195, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ---> System.Runtime.InteropServices.COMException (0x8000FFFF): Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
   at <CrtImplementationDetails>.DoDllLanguageSupportValidation()
   at <CrtImplementationDetails>.LanguageSupport._Initialize(LanguageSupport* )
   at <CrtImplementationDetails>.LanguageSupport.Initialize(LanguageSupport* )


   --- End of inner exception stack trace ---
   at <CrtImplementationDetails>.ThrowModuleLoadException(String errorMessage, Exception innerException)
   at <CrtImplementationDetails>.ThrowModuleLoadException(String , Exception )
   at <CrtImplementationDetails>.LanguageSupport.Initialize(LanguageSupport* )
   at .cctor()
   --- End of inner exception stack trace ---
   at SAP.Middleware.Connector.RfcConfigParameters..cctor()- Stack trace:   at SAP.Middleware.Connector.RfcConfigParameters..ctor()

以下は私たちの観察
です 1.常に問題が発生するわけではありません。問題は断続的に投げています。
2. サーバー マシンに移動してそこでアプリケーションを実行すると、エラーがスローされません。エラーは、アプリケーションが他のクライアント マシンからアクセスした場合にのみスローされます。
3. 同じ問題は、開発、テスト、およびステージング環境では再現できません。これは本番環境だけの問題です。 4. 特定の dll を再デプロイすると、1 日または半日はエラーなしで動作し始め、翌日以降はエラーがスローされます。

私の具体的な質問は次のとおりです(1)「「SAP.Middleware.Connector.RfcConfigParameters」の型初期化子が例外をスローしました-エラー番号:-2146233036」という例外を克服する方法は?
(2) 私たちの主な疑わしい領域はメモリ リークです。他の領域を疑うことはできますか?
(3) 本番環境へのアクセスは非常に制限されているか、まったくありません。そのため、dev や test などのフル アクセス権を持つ他のサーバーで問題を再現しようとしています。他の環境で問題を再現するために、マルチ ユーザーおよびマルチ ログインのシナリオを検討しています。他のシナリオを検討できますか?

更新
テスト サーバーの 1 つで問題を再現することができました。そして、問題を解決するために以下を試しました。Visual C++ 2005 Redistributable SP1、.NET コネクタ 3.0、VB6.0 をインストール。まだ問題があります。問題の根本原因を見つけることができません。

問題の根本原因を見つけるために、他に何を確認して実行できますか?

応答に基づく編集:
1. 静的変数は使用していません 2. Visual C++ 2005 Redistributable SP1 をインストールしましたが、それでも問題は解決しませんでした。

4

2 に答える 2

1

このスレッドは、Visual C++ 2005 Redistributable SP1 パッケージをインストールすることで解決したことを示唆しています。(sapnco_utils.dll の依存関係のため)

于 2013-05-03T17:05:15.400 に答える