1

背景: 現在、C# で Dynamics AX 2009 Business Connector を使用しています。現在のプロジェクトでは、複数の AOS サーバーに接続する必要があります。理想的には、すべてを並行して実行しますが、順次実行することも適切です。1つのサーバー(任意のサーバー)に正常に接続できますが、別のサーバー(または同じサーバーでも、指定された名前ではなくデフォルトとして接続するためにLogonSystemChangedException使用しているサーバー)に接続しようとすると、常にヒットします。nullLogoffDispose以前の BC で、それを参照する変数を null に設定し、スレッドを 30 秒間スリープ状態にして、呼び出した場合でも、このエラーが発生します。GC.Collect()(申し訳ありませんが、絶望的な時代です)次に、新しい変数でAXの別のインスタンスを完全に見て、まったく新しいBCを作成します。これは、MS のコードには、プロセスの有効期間を通じてこの情報を永続化する舞台裏の静的オブジェクトがあることを示唆しています。

提案された解決策が見つかりました:

  • ここで、AOS インスタンスの正しいフォーマットとともに LogonAs を使用するための推奨される修正を見つけました: http://asonofmartha.blogspot.co.uk/2010/06/ax-net-business-connector-how-to-open.html -しかし、これを試してみましたが、うまくいきませんでした。

  • これまでに見つけた唯一の方法は、2 番目の接続用に 2 番目のプロセスを作成することですが、これは不快な解決策です

理由: 複数の AOS に接続する理由は、特定の AX インスタンスに接続し、そのインスタンス上のすべての AOS サーバーをループしてから、すべてのクライアントとその SPIDS のリストを返す CLR テーブル関数を作成しているためです (これは、そのセッションの AOS に接続されている)。これは、データベースでブロックが発生した場合に、監視ソフトウェアが AX ユーザー セッションに関する情報を返せるようにするためです。

質問: 同じプロセス内で AX .Net Business Connector を使用して複数の AOS に接続する方法はありますか (並列が不可能な場合は順次)?

4

2 に答える 2

3

少し前に、私はこの問題に直面しましたが、解決策がありませんでした。雇用主のサービス プランを通じて MS に問い合わせたところ、.NET BC には、プロセス全体が終了するまで解放されない接続データのキャッシュが保存されているようです。.NET BC は次のバージョンで完全に廃止されるため、これは変更される予定はありません。

私が行ったことは、AOS に対して実行されるサービスを開発し、サービスの 3 つのインスタンスを実行することでした。各インスタンスは、AOS から SQL テーブルに情報を収集し、そこですべての情報を統合することができました。

お役に立てれば。

于 2013-08-28T20:06:53.783 に答える