0

app.configを使用して、リモートWebアプリに対する「プレビュー」WebサービスURLと「本番」WebサービスURLを区別しています。WSDLは、プレビューと本番の両方で同じです。ただし、Visual StudioのWeb参照フォルダーにあるURLとは異なるURLを使用すると、次のエラーが発生します。There is an error in XML document (2, 691).

アプリの設定で定義されたURLを使用するようにコードを設定する方法の例を次に示します。

MyNamespace.MyType.MyService ws = new MyNamespace.MyType.MyService()
{
    Url = System.Configuration.ConfigurationManager.AppSettings["url"]
};

2つのWSDLを比較しましたが、唯一の違いは、のtargetNamespace属性xsd:schemaと要素のlocation属性です。soap:address

URLの動作を動的に設定しましたが、他のプレビュー/本番アプリで以前に行ったことがあるため、これが可能であることがわかります。

4

1 に答える 1

2

問題は、プレビューアプリと本番アプリが2つの別々のサーバーでホストされていたことです。それらを同じサーバー(または少なくともWebサービス)でホストすると、名前空間を同じままにすることができ、唯一の違いはURLです。

以前のWebサービスは次のようになりました。

  • 本番-http ://本番.example.com / myapp / webservice.aspx
  • プレビュー---- http:// Preview .example.com / myapp / webservice.aspx

修正は、次のようにホストすることでした。

  • 本番-http: //example.com/本番/myapp/webservice.aspx
  • プレビュー---- http: //example.com/プレビュー/myapp/webservice.aspx

これが不可能な場合、私が知っている他の唯一の解決策は、2つのWeb参照を用意することです。1つは本番用で、もう1つはプレビュー用です。欠点は、名前空間(つまり、タイプ)が異なり、ほとんどのコードを複製する必要があることです。

于 2013-01-08T21:11:09.257 に答える