38

WCF サービスを .NET Framework 4.5 にアップグレードしました。IMetaDataExchangeそうすると、ホスト構成ファイルの周りに青い波線があることに気付きました。

構成のサービス セクションは次のようになります。

<services>
    <service behaviorConfiguration="MyBehavior" name="MyServiceHost">
        <endpoint binding="wsHttpBinding" bindingConfiguration="noSecurityBinding" contract="MyServiceContract"/>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>

IMetadataExchangeエラーの上にマウスを置くと、次のように表示されます。

'contract' 属性が無効です - 値 'IMetadataExchange' は、そのデータ型 'serviceContractType' によると無効です - 列挙制約が失敗しました。

サービスはうまくいっているようです。だから、なぜこれが無効なのか興味があります。

4

11 に答える 11

53

VS を閉じた後、.SUO (ソリューション ユーザー オプション ファイル) ファイルを削除できますか? これにより、VS の XMLEditor コンポーネントのキャッシュがリセットされ、問題が解決されます。

于 2012-09-25T06:19:32.323 に答える
18

プロジェクトの参照に System.ServiceModel を追加したところ、消えてしまいました

于 2014-05-11T20:37:20.413 に答える
10

これと同様の問題がありました.WCFサービスのApp.Configにいくつかnameの属性が表示され、恐ろしい青い波線が表示され、エラーリストに警告が表示されます。contract

私の場合、問題は、サービスとコントラクトを作成した後、サービス プロジェクトの名前空間をリファクタリングしたため、生成されたソリューション固有の *.xsd が新しい名前空間を使用していましたが、リファクタリング ツールが App.Config を更新していなかったことです。変更。完全に指定された名前空間に入って追加すると、問題が修正されました。

于 2013-07-17T16:03:17.267 に答える
7

おそらくOPの答えではありませんが、この問題を抱えている他の人は、サービス[ServiceContract]の宣言されていることを確認する必要がinterfaceあります.これは正確なエラーを生成するためです.

于 2013-08-22T12:31:21.850 に答える
3

警告でIntellisenseを実行している場合。それはあなたがそのメンバーを明示的に呼び出すことができるあなたから選択するためのリストを表示します。

于 2013-03-12T22:00:11.850 に答える
3

.SUO ファイルを削除してもうまくいかない場合は、参照を調べて System.ServiceModel 参照があることを確認してください。それが私をここに連れてきた問題でした。

于 2013-05-15T14:42:16.073 に答える
2

コントラクト属性で大文字と小文字が区別されることが問題であることがわかりました。

同じサービスを参照する別のソリューションがありましたが、app.config に警告はありませんでした。app.config の system.serviceModel セクションで notepad++ で比較を実行したところ、2 つのコントラクト属性の大文字と小文字の違いが強調されました。

契約属性を正しい大文字と小文字を区別するスペルに変更するとすぐに、警告はすぐに消えました

于 2018-01-15T21:18:35.677 に答える
1

VS2013 Prof を閉じて、「obj」フォルダを削除し、再コンパイルすると、作業が完了しました。

于 2016-03-04T07:16:06.210 に答える
0

クライアント側でも同じ問題がありました。私にとっての解決策は、サービス参照を削除して再度追加することでした。

于 2018-04-16T12:49:18.040 に答える