2

私は次のコードを書きましたが、サービスの最初のメソッドだけがクライアント側に表示されますが、残りの2つは表示されません:(

誰かが私に何が問題になるのか教えてくれますか?

ServiceInterface:

[ServiceContract]
    public interface IService1
    {

       [OperationContract]
        claimantResponse SaveClaimant(claimant claimant);

        [OperationContract]
         claimantResponse RenewExpiry(claimantMin claimantMin);

        [OperationContract]
         claimantResponse getAccessCode(claimantMin claimantMin);
    }

ServiceImplementation:

 public class Service1 : IService1
    {


        public claimantResponse SaveClaimant(claimant claimant)
        {
            return new claimantBLL().SaveClaimant(claimant);
        }


        public claimantResponse RenewExpiry(claimantMin claimantMin)
        {
            return new claimantBLL().RenewExpiry(claimantMin);
        }

        public claimantResponse getAccessCode(claimantMin claimantMin)
        {
            return new claimantBLL().getAccessCode(claimantMin);
        }


    }

データ:

[DataMember]
public class claimantResponse 
    {
       private List<string> _ErrorMessage = new List<string>();

       [DataMember]
       public List<string> ErrorMessage
        {
            get { return _ErrorMessage; }
            set { _ErrorMessage = value; }
        }

       private List<int> _ErrorCode = new List<int>();

       [DataMember]
       public List<int> ErrorCode
       {
           get { return _ErrorCode; }
           set { _ErrorCode = value; }
       }

       [DataMember]
        public String FormStatus { get; set; }
       [DataMember]
        public DateTime ExaminationDate { get; set; }
       [DataMember]
        public String AccessCode { get; set; }
       [DataMember]
        public String Status { get; set; }
        [DataMember]
        public string temp2 { get; set; }
    }

実行中のサービス

私自身のメソッドの代わりに、2つの奇妙なメソッドgetdataとgetdataobjectを示しています。

どんな助けでもいただければ幸いです。

4

4 に答える 4

2

投稿したコードはコンパイルされません。クラスのデータメンバー属性が原因です。

次に「とにかく実行」を押すと(正確なテキストは思い出せませんが、それに近いものがあります)。次に、コンパイルされたコードの最後のバージョンを実行します。表示されているメソッド名は、サービスの作成に使用した元のテンプレートに含まれている可能性があります。

于 2013-03-07T22:44:47.933 に答える
2

Visual Studio 2012を再起動するだけで、この問題を解決しました:-)

私のバージョンの問題は、メソッドの名前を変更し、インターフェイスからOperationContract属性を削除しても、WCFテストクライアントを実行したときに表示されたメソッドが変更されないことでした。メソッドをコメントアウトすると、VisualStudioがそのメソッドのデバッガーを実行しました。Visual Studioを再起動すると、通常の状態に戻りました。

于 2014-02-27T05:41:51.507 に答える
1

私はこの問題の解決策を得て、ここに投稿したので、同じシナリオで他の人を助けるかもしれません:

1)クラスとプロパティから[DataMember]属性を削除します。2)新しいWCFシンプルサービスを作成し、同じコードを配置することで機能しました。

古いサービスからdatamember属性を削除しましたが、機能していなかったため、新しいサービスが行った新しいメソッドが表示されなかったため、サービスが破損したと思います:(

3)web.cofigは、wcfのサンプルを作成したときから同じままであり、この場合は変更する必要はありません。

ありがとうございました!

于 2013-03-15T10:42:59.200 に答える
1

そのため、同じ問題が発生し、Datacontractに関係なく追加された新しいメソッドを確認できませんでした

メソッドを公開するために最初に必要なのは、以下の例のように、インターフェース内のメソッドの上にあるデータアノテーション(属性)OperationContractです。
[ServiceContract] public interface IService { [OperationContract] Student_Identification GetStudentIdentification(int StudentId); }

これが私の最初の問題でしたが、それでも表示されなかったため、参照されているアプリでサービス参照を更新することにしました。

ここに画像の説明を入力してください

[サービス参照の更新]をクリックすると、サーバーに接続できなかったことを示すエラーメッセージが表示されました。私の場合、サービスは別のサーバーを指しています。しかし、ローカルコンピューターを指す必要があったので、[サービスリファレンスの構成]をクリックしました
ここに画像の説明を入力してください


私の問題がありました。クライアントアドレスがローカルの開発マシンではなく、別のURLに設定されていました。サービスが使用していた既存のURLを使用してホストファイルにホストエントリを追加しようとしましたが、それでも問題は解決しませんでした。このプロジェクトをローカルでセットアップしているので、先に進んでIISを開きました。自分のサイトを選択し、右クリックして[バインディングの編集...]を選択しました。
ここに画像の説明を入力してください


[追加]をクリックしてサービスにURLアドレスを追加し、万が一の場合に備えてホストファイルに追加することを忘れないでください。一般的にここにあります->C:\ Windows \ System32 \ drivers \ etc ここに画像の説明を入力してください

サービスを参照しているアプリに戻り、サービス参照を右クリックして、サービス参照の更新を選択します。これは私のためにうまくいきました、うまくいけば、これは彼らの旅の誰かを助けるでしょう。

于 2018-01-05T22:58:47.623 に答える