0

SOAP Web サービスを介して別のアプリケーションと通信するアプリケーションを構築しています。もう 1 つのアプリケーションは、PHP を使用して別の会社によって開発されています。私たちのアプリは、Web サービスのクライアントです。

アプリを接続したテスト環境があり、すべてが正常に機能しました。その後、本番環境に移行しました。ただし、Web サービスの名前空間は URL に基づいて自動的に生成されるため、test と prod env の名前空間は一致しません。

実稼働用に svcutil を使用して SOAP クライアントをもう一度生成しましたが、ソリューションをデプロイして環境をテストすると、Web サービスに接続できません。彼らはまた、何も変えようとしません。

エンドポイント アドレスに基づいて実行時に Web サービス クライアントの名前空間を変更することは可能ですか?

4

1 に答える 1

2

私の知る限り、実行時に名前空間を変更することはできません。確実に機能する明らかなオプションは、おそらくコンパイル時に実行することです。

#if PRODUCTION
[ServiceContract(Namespace = "MyProduction Namespace", Name = "PhpServiceContract")]
#else
[ServiceContract(Namespace = "MyTest Namespace", Name = "PhpServiceContract")]
#endif

複数の場所で使用していて、どこでも使用したくない場合#ifは、定数に移動してください。

[ServiceContract(Namespace=Definitions.CURRENT_NAMESPACE, Name = "PhpServiceContract")]

そして、それを 1 か所で定義するだけです。

public static class Definitions
{
#if PRODUCTION
    public const string CURRENT_NAMESPACE = "MyProduction Namespace";
#else
    public const string CURRENT_NAMESPACE = "MyTest Namespace";
#endif
};
于 2012-10-05T17:14:07.737 に答える