Sonic ESB プロセスを Web サービスとして公開し、メソッドを呼び出してデータをアップロードする .NET アプリケーションを作成しました。
このために、.NET 側に複雑なオブジェクトのライブラリを用意し、それを Sonic ESB 側の Web サービス定義に xml 形式で追加しました。これは、Sonic ESB プロセスを公開するために必要な手順です。呼び出されるメソッドは、.NET アプリケーションから渡されるオブジェクトを認識できる必要があるためです。
ただし、サービス参照を .NET アプリケーションに追加しようとすると、同じライブラリがサービスの両側で 2 つの異なるものとして扱われます。これは、異なる名前空間に割り当てられているためです。サービス参照を作成するときに「参照されたアセンブリで型を再利用する」がチェックされていることを確認しても違いはありません。互いに対応する異なる型は分離されています。
したがって、次のコードはエラーになります。
public string PushManifest(FargoGate.DtoLib.OutboundFargoMessage message)
{
FargoGateOnRampWSRequest wsRequest = new FargoGateOnRampWSRequest();
OutboundFargoMessage outMessage = new OutboundFargoMessage();
//TODO ERROR: Cannot convert source type 'FargoGate.DtoLib.OutboundMessage' to target type 'PollFargoJob.FargoGateOnrampWS.OutboundFargoMessage'
wsRequest.OutboundFargoMessage = message;
throw new NotImplementedException();
}
どんな提案でも大歓迎です!