1

わかった。これは私の会社の顧客ポータルで、MVC 2 プロジェクトです。ポータルがデータを取得するバックエンド SAP システムがあります。ただし、SAP に直接ヒットするわけではありません。VB アプリに xml 要求を送信し、データを取得して xml 応答で送り返します。、などIRequestのさまざまなリクエスト実装の例をすべて実装するインターフェースがあります。これらはすべてメソッドを実装します。CustomerNumberRequestCompanyNameRequestToXml名前が示すように、送信する xml を構築するだけです。既存のリクエストはすべて正常に機能します。(私がこのプロジェクトを継承し、それを書いた人はもう私たちと一緒にいないことを前置きさせてください) 私は今、SAP から担当者グループを取得するための要求を送信しようとしています。基本的に、他のリクエストの 1 つをそのままコピーし、適切なリクエストを送信するために必要な調整を行いました。しかし、理解できないエラーメッセージで失敗し続けます:

メッセージを逆シリアル化しようとしているときにフォーマッタが例外をスローしました: パラメータ http://tempuri.org/:requestを逆シリアル化しようとしているときにエラーが発生しました。InnerException メッセージは、「タイプ 'XXXXX.CustomerPortal.Domain.RepGroupRequest' がアセンブリ 'XXXXX.CustomerPortal.Domain、バージョン = 1.0.0.0、カルチャ = ニュートラル、PublicKeyToken = null で見つからなかったため、デシリアライザーはデシリアライズするタイプを読み込めません」でした。 '。シリアル化されている型が、逆シリアル化されている型と同じコントラクトを持ち、同じアセンブリが使用されていることを確認してください。詳細については、InnerException を参照してください。

このエラーはすぐに発生します_communicationService.ProcessRequest(request);(以下に表示)ここでProcessRequest作成しようとしているメソッドには入りませんNetDataContractSerializer:

public override XmlObjectSerializer CreateSerializer(Type type, XmlDictionaryString name, XmlDictionaryString ns, IList<Type> knownTypes)
{
    return new NetDataContractSerializer();
}

そして死ぬ。呼び出されるメソッドは次のとおりです。

private void PopulateRepGroups()
{
    List<string> repGroups = new List<string>();
    RepGroupRequest request = new RepGroupRequest();
    foreach (RepGroup repGroup in _repService.GetRepGroups(request))
        repGroups.Add(repGroup.RepGroupName);
    ViewData["RepGroups"] = new SelectList(repGroups);
}


public List<RepGroup> GetRepGroups(RepGroupRequest request)
{
    string response = _communicationService.ProcessRequest(request);
    return RepGroupResponseFactory.GetRepGroupResponse(response);
}

このエラーメッセージが私に何を伝えているのか、誰か教えてもらえますか? タイプが見つからないと言われていますが、タイプは IRequest である必要があります(これは、CreateSerializerヒットしたときに表示されるものです)。私は明らかに道に迷っています、助けてください!

4

1 に答える 1

1

あなたの例外を引用する

シリアル化される型が、逆シリアル化される型と同じコントラクトを持ち、同じアセンブリが使用されていることを確認してください

CustomerPortal.Domain.RepGroupRequest が存在する両端のライブラリのバージョンをチェックして、それらが正確に同じバージョンであることを確認します。

于 2011-06-10T16:14:39.987 に答える