0

オプションの入力パラメーターを使用するためにリファクタリングする必要がある WCF Web サービス メソッド ( 3.5 NET Framework以上) があります。Mi の調査では、概念が 4.0 で導入されているため、オプションのパラメーターが結論付けられているため、問題を解決するにはいくつかの回避策を講じる必要があります。私のコードの更新は次のようになります。

partial class Class1: IService {

    public int MethodName ( int param1, string param2 )
    {
         // code here
    }

    public int MethodName ( int param1)
    {
         // code here
         string param2 = FillInInternally();
         return this.MethodName(param1, param2);
    }

運用契約も更新しました。

[ServiceContract]
public interface IService
{
    [OperationContract(Name = "Alias1")]
    int MethoName(int param1, string param2);

    [OperationContract(Name = "Alias2")]
    int MethoName(int param1);

}

public partial class ServiceClient : ClientBase <IService>, IService
{

    public int MethoName(int param1, string param2)
    {
       return Channel.MethodName(param1, param2);
    }

    public int MethoName(int param1)
    {
       return Channel.MethodName(param1);
    }
}

以上の説明で、Web サービスを正しくビルドすることができました。その上、統合テストも完全に実行されました。その後、サーバーにインストールする必要があり、WSDL をテストしようとしたときに、列 1、行 1 の svc ファイルでエラーを示す問題に直面しました (正確なエラー メッセージを含めていないことに注意してください。週末の製品の問題を回避するために、WS を以前のバージョンにロールバックしました)。

私の質問は、誰かが私が開発から何かを逃していると思いますか? または、「インストール」時に WCF サービス メソッドを正しくオーバーロードできますか? 問題は解決しましたか?.

どんなコメントでも大歓迎です。

ありがとう、

.NET Framework 3.5 Visual Studio 2008 Standard Edition C#

4

1 に答える 1

0

ServiceClientクラスを手動で作成していますか? svcutil.exeツールを使用してプロキシを生成することをお勧めします。生成されたプロキシ コードを直接変更することはお勧めしません。

ツールまたは VS 追加サービス参照を使用してプロキシを生成した場合は、 が表示さIServiceれ、 は次のServiceClientようになります。

[ServiceContract]
public interface IService
{
    int Alias1(int param1, string param2);

    int Alias2(int param1);
}

public partial class ServiceClient : ClientBase <IService>, IService
{
    // other stuff
    public int Alias1(int param1, string param2)
    {
       return base.Channel.Alias1(param1, param2);
    }

    public int Alias2(int param1)
    {
       return base.Channel.Alias2(param1);
    }
}

クライアントには asAlias1Alias2notのメソッドがあることに注意してくださいMethodName。サービスと対話するための適切なプロキシがあることをご自身で確認してください。

于 2012-06-18T10:12:05.237 に答える