1

私はある状況で本当に立ち往生しているので、それを部分的に説明しようとします.

1: いくつかのサービスを含む WCF クラス ライブラリ プロジェクトがあります。

2: クラス ライブラリ プロジェクトがあります。

3: クラス ライブラリ プロジェクトを使用する Web サイトがあります。

4:クラス ライブラリには WCF クラス ライブラリ プロジェクトからのサービス参照があり、同じ WCF 参照が Web サイトにも追加されます。

5: Web サイトをビルドすると、次のエラーが表示されます。

エラー 1113 Reference.svcmap: サービス参照 'VPServices' のコードを生成できませんでした。wsdl:portType 詳細をインポートできません: WSDL インポート拡張機能の実行中に例外がスローされました: System.ServiceModel.Description.DataContractSerializerMessageContractImporter エラー: 参照された型のリストには、名前空間 'http:// にデータ コントラクト名 'VpResponseData' を持つ複数の型が含まれていますschemas.datacontract.org/2004/07/VPExternalCalls.CoreApi.MessageDefinitions'. 次のタイプの 1 つを除くすべてを除外する必要があります。一致するタイプのみが有効な参照になることができます:

"WebApplication.Helpers.Class.ResponseData, WebApplication.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" (一致) "VPExternalCalls.CoreApi.MessageDefinitions.VpResponseData, VPExternalCalls, Version=1.0.0.0, Culture=neutral , PublicKeyToken=559d4289d6c6d138" (一致) エラー ソースへの XPath: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IVPServices'] wsdl:binding をインポートできません詳細: wsdl:binding が依存している wsdl:portType のインポート中にエラーが発生しました。wsdl:portType への XPath: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IVPServices'] エラー ソースへの XPath: //wsdl:definitions[@ targetNamespace='http://tempuri.org/']/wsdl:binding[@name=' BasicHttpBinding_IVPServices'] wsdl:port をインポートできません 詳細: wsdl:port が依存している wsdl:binding のインポート中にエラーが発生しました。wsdl:binding への XPath: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='BasicHttpBinding_IVPServices'] エラー ソースへの XPath: //wsdl:definitions[@ targetNamespace='http://tempuri.org/']/wsdl:service[@name='VPServices']/wsdl:port[@name='BasicHttpBinding_IVPServices'] App_WebReferences/VPServices/

4

1 に答える 1

2

私も同様のエラーを経験しましたが、私が好む解決策は、サービス参照を完全に取り除き、独自の単純なプロキシ クライアントを作成することです。

サービス参照のインポートにとどまらなければならない場合は、これを試すことができます。サービス参照のインポート ダイアログで、詳細ボタンをクリックします (または、既存の参照を右クリックし、コンテキスト メニューから [サービス参照の構成] を選択します。詳細プロパティ ダイアログで、「参照アセンブリで型を再利用する」というボックスのチェックを外します。

ダイアログ

両方のサービス参照に対してこれを実行し、再コンパイルして、問題が解決するかどうかを確認します。参照された型の一部が必要な場合は、「指定されたアセンブリで型を再利用する」を使用してそれらを選択的に再度有効にする必要がありますが、多くの場合、参照された型を再利用せずにサービス参照を使用できます。

于 2012-10-09T21:52:59.933 に答える