28

次のようなエラー メッセージが表示されます。

契約属性が無効です。データ型「clientcontracttype」によると、値は無効です

以下は、この WCF アプリケーションの web.config のエンドポイント構成です。.NET Framework 4.5 と Visual Studio 2012 を使用しています。コントラクトOnlineReporting.Core.Contracts.IReportingInternalWcfPortalが既に存在することを確認しました。

<endpoint address="http://localhost:63817/ReportingInternalWcfPortal.svc" 
          binding="basicHttpBinding" 
          bindingConfiguration="BasicHttpBinding" 
          contract="OnlineReporting.Core.Contracts.IReportingInternalWcfPortal" 
          name="ReportingInternalPortal" />
4

9 に答える 9

24

この質問はかなり古いものであり、解決策が見つかったかどうかはわかりませんが、念のため、これが解決することがわかったものです。

1) ソリューション エクスプローラーの [サービス参照] フォルダーで、問題のあるサービス参照名を右クリックし、[サービス参照の構成] を選択します。

2) サービス参照設定ウィンドウが表示されます。[参照されたアセンブリで型を再利用する] というラベルの付いたボックスのチェックを外し、[OK] ボタンをクリックします。

3) プロジェクトを再構築します。

再構築後、警告は消えるはずです。

于 2014-01-07T21:17:23.120 に答える
23

Web サービス プロジェクトで同じエラーを探しているこの質問を見つけました。

私の場合、インターフェイスに[ServiceContract]属性を追加するのを忘れたときに、このエラーが発生しました。IServiceBase

エラーに追加するとすぐに消えました。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace MyService
{
    [ServiceContract]
    public interface IServiceBase
    {
        [OperationContract]
        IEnumerable<ListItem> GetListItems();

        [OperationContract]
        void SaveListItems(IEnumerable<ListItem> listItems);
    }
于 2014-09-30T19:50:06.950 に答える
3

私の場合、サービス コントラクトの鍵となるインターフェイスを無意識のうちに削除して、サービス コントラクトを変更しました。

数週間後、古いサービス参照を持つ壊れたクライアントを見つけました。インターフェイスの削除が間違っていたので、元に戻しました。

別の考えられる解決策は、新しいサービス コントラクトに一致するようにサービス参照を再構築することです (私の場合、参照されたインターフェイスが削除されたため、プロジェクトのビルドが壊れていたでしょう)。

私を正しい方向に向けてくれた OrangeKing89 に感謝します。サービス契約が変更される可能性があることは知っていました。

于 2016-02-02T02:09:24.140 に答える
0

両方のサービスが同じソリューションに含まれている場合、両方のサービスが機能していれば、実行する必要があるアクションは 2 つだけです。

  • 必要な Web サーバーを含むプロジェクトへの参照を追加します。「プロジェクト」タブから行います。
  • メイン サービスの web.config を次のように構成します。

    <services>
      <service name="MyCurrentProject.Service" behaviorConfiguration="ConfigRest">
        <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding" bindingConfiguration="restServicehttp" name="RestEndpoint" bindingName="webHttpBinding" contract="MyCurrentProject.Service"/>
      </service>
      <service name="AnotherPoject.Service" behaviorConfiguration="ConfigRest">
        <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding" bindingConfiguration="restServicehttp" name="RestEndpoint" bindingName="webHttpBinding" contract="AnotherPoject.Service"/>
      </service>
    

于 2019-03-27T17:22:00.873 に答える