2

サーバーで BizTalk パッケージを実行すると、次のエラーが発生します。

サブスクライバーが見つからなかったため、パブリッシュされたメッセージをルーティングできませんでした

パッケージの説明: ストアド プロシージャを使用して、CSV フラット ファイルを SQL Server にインポートします。

ここに画像の説明を入力

壊す:

テーブル コードを作成します。

CREATE TABLE [dbo].[Accounts](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [AccountName] [nvarchar](150) NULL,
    [ServiceAddress] [nvarchar](150) NULL,
    [AccountNumber] [nvarchar](50) NULL,
 CONSTRAINT [PK_Accounts] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

ストアド プロシージャ コードを作成します。

CREATE PROCEDURE [dbo].[InsertAccount]
    @AccountName AS NVARCHAR(150) ,
    @ServiceAddress AS NVARCHAR(150) ,
    @AccountNumber AS NVARCHAR(50)
AS 
    INSERT  INTO dbo.accounts
            ( AccountName ,
              ServiceAddress ,
              AccountNumber
            )
            SELECT  @AccountName ,
                    @ServiceAddress ,
                    @AccountNumber

フラットファイル: sample.csv という名前

Account Name,Service Address,Account Number
JOE BLOW,ADDRESS X CITYX IL 61999,932F623Y52

データベースへの接続にWCFを使用しています ここに画像の説明を入力

ストアド プロシージャを使用しています ここに画像の説明を入力

フラットファイルのスキーマを作成しました ここに画像の説明を入力

受信ポートの構成

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

送信ポートの構成

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

フラットファイルを受け取るメッセージを作成しました

ここに画像の説明を入力

XML を SQL に送信するメッセージを作成しました

ここに画像の説明を入力

受信コンポーネントを削除し、フラット ファイル メッセージを割り当てました ここに画像の説明を入力

Send コンポーネントを削除し、Stored Proc Message を割り当てました

ここに画像の説明を入力

ストアド プロシージャの受信応答コンポーネントを削除しました

ここに画像の説明を入力

次に、Construct Message コンポーネントをドロップして、XML ドキュメントを初期化し、マップを作成しました。

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

GAC にデプロイせずにパッケージをサーバーにデプロイし、コンポーネントを GAC に手動で登録しました。

ここに画像の説明を入力

サーバー内:

すべての受信ポートと送信ポートを設定しました。

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

送信ポート

ここに画像の説明を入力 ここに画像の説明を入力

アプリケーションを構成します

ここに画像の説明を入力

アプリケーションを開始しました:

  • 受信場所有効
  • 送信ポート開始
  • アプリケーションを完全に停止して再起動しました。

ファイルをドロップすると、ファイルが消えてエラーが発生します

次のエラーが表示されます

メッセージング エンジンは、アダプターによって送信されたメッセージを処理できませんでした:FILE ソース URL:C:\Biztalk Test\Sales\SampleFile*.csv。詳細: サブスクライバーが見つからなかったため、パブリッシュされたメッセージをルーティングできませんでした。このエラーは、サブスクライブしているオーケストレーションまたは送信ポートが登録されていない場合、またはサブスクリプションの評価に必要なメッセージ プロパティの一部が昇格されていない場合に発生します。Biztalk 管理コンソールを使用して、このエラーのトラブルシューティングを行ってください。

URI "C:\Biztalk Test\Sales\SampleFile*.csv" の受信場所 "ServerReceiveLocation" でアダプター "FILE" によって受信されたメッセージは中断されます。エラーの詳細: サブスクライバーが見つからなかったため、パブリッシュされたメッセージをルーティングできませんでした。このエラーは、サブスクライブしているオーケストレーションまたは送信ポートが登録されていない場合、またはサブスクリプションの評価に必要なメッセージ プロパティの一部が昇格されていない場合に発生します。Biztalk 管理コンソールを使用して、このエラーのトラブルシューティングを行ってください。

ここに画像の説明を入力 ここに画像の説明を入力

4

2 に答える 2

4

基本的に、オーケストレーションのサブスクリプションは、受信したメッセージのコンテキスト プロパティと一致しません。

そのエラーが発生した場合は常に、中断されたメッセージを見て、それがどのように見えるかを確認し、そのコンテキスト プロパティを BizTalk 管理者のサブスクリプションと比較する必要があります。

あなたの場合、問題は、それを XML に変換し、スキーマ名を持つメッセージ タイプ コンテキスト プロパティで公開する、指定されたフラット ファイル スキームを持つフラット ファイル ディサセンブラを持つ受信パイプラインがないことです。

何が起こっているかというと、未加工のフラット ファイルをメッセージ タイプなしでメッセージ ボックスにパブリッシュし、メッセージ タイプはオーケストレーションもサブスクライブしているものであり、そのポートからのメッセージをリッスンする特定のサブスクリプション ルールはありません。次に生メッセージを処理します。そのため、メッセージをどう処理すればよいかわからず、上記のエラーで中断されます。

于 2015-12-03T21:16:30.727 に答える
3

あなたは次のように述べています:

「パッケージを GAC にデプロイせずにサーバーにデプロイした後、コンポーネントを手動で GAC に登録しました。」

ただし、これは BizTalk Server の展開手順が正しくないことを示しています。手動でGACする必要はありません。また、コンポーネントを BizTalk Server に登録 (インポート) したことをどこにも示していません。

インポートしないと、アーティファクトがランタイムに表示されないため、スキーマが見つかりません。

ローカルで実行している場合 (この時点で実行しているはずです) 、Visual Studio からデプロイするだけで、すべてが自動的に登録され、GAG されます。

リモート サーバー (開発/テスト BizTalk インスタンスではない) に配置する場合は、ビルド マシンから .msi をエクスポートするか、BizTalk 配置フレームワークで配置パッケージを作成する必要があります。

于 2015-12-04T02:34:40.370 に答える