0

Web サービスに接続する必要があるアプリケーションを作成しています。特定の状況下では、エンドポイント アドレスを切り替える必要があります。

System.ServiceModel.Description.ServiceEndpointアドレスを変更する必要がある場合、これは を変更するのと同じくらい簡単だと思います。ただし、これを行うと例外が発生します。これは、1 つのアドレスには SSL が必要であり、もう 1 つのアドレスには必要ないためです。

Web サービスのエンドポイント アドレスを正しく更新するにはどうすればよいですか?

注: これは C#、.Net 3.5 プロジェクトです。

4

1 に答える 1

0

わかりました、私は解決策を見つけました。Visual Studio がサービスのラッパー クラスを生成するとき、 に[ServiceName]SoapClientはバインディングとエンドポイントをパラメーターとして受け取るコンストラクターがあります。これらを定義して、コンストラクターに渡すだけです。

これは疑似例です。

    void InitializeMyWebService(bool useSSLSite)
    {
        BasicHttpBinding b = useSSLSite ? 
            new BasicHttpBinding(BasicHttpSecurityMode.Transport) : 
            new BasicHttpBinding();

        EndpointAddress e = useSSLSite ? 
            new EndpointAddress("https://www.example.com/svc/MyWebService.asmx") :
            new EndpointAddress("http://intranet_server/svc/MyWebService.asmx");

        myWebService = new MyWebServiceSoapClient(b, e);
    }
}

MyWebServiceuserSSLSiteメソッドへのパラメーターで定義されているように、機能するようになりました。

于 2013-09-25T12:35:21.410 に答える