2

ユーザーを認証し、ASP.Net アプリケーションからユーザーに関する情報を取得する必要があります。2 つのサイト (サンドボックス、本番) と 2 つの組織 ID があるため、2 つの SalesForce WSDL ファイルを生成する必要がありました。

2 つのファイル (それぞれのサイズは約 600kb) の差分をとったところ、95% は同じですが、いたるところに十分な違いが散らばっています。両方を使用する必要があるほど十分です。ソリューションへの Web 参照として両方を追加しましたが、ここから問題が始まります。

明らかに、同じクラス/関数が含まれているため、同じファイルで両方の参照を使用することはできません。週末に簡単なソリューションを作成する必要があったため、2 つのクラスを作成しました。それぞれが異なる Web 参照を使用していますが、それ以外は正確な機能であり、ユーザーがアクセスする URL に基づいて適切なクラスを使用します。から。これはうまく機能しますが、私には悪い (読み: 迅速で汚い) 解決策だと思います。

私の質問:次の1つ以上を行う方法はありますか:

  1. その場で Web 参照を変更しますか?
  2. 同じファイルで両方の Web 参照を使用しますが、一方を別の名前空間に配置しますか?
  3. 状況全体に対するより良い解決策を見つけますか? 巨大な XmlSerializer.dll (3mb!) を見つけました - おそらく両方の巨大な WSDL ファイルを使用しているためです。

御時間ありがとうございます。

4

3 に答える 3

2

実際、解決策ははるかに簡単で、私の鼻の下に隠れていました. Namespace aliases
を使用する必要がありました。そうすれば、コンパイル時に両方のサービスを含めて、実行時にどちらを使用するかを決定できます。

using System.Web;
.
using ProductionAPI = MyCompany.SForce;
using SandboxAPI = MyCompany.SForce.Sandbox;
.
.
.
if(isSandbox)
  binding = new SandboxAPI.SForceService();
else
  binding = new ProductionAPI.SForceService();
.
.
.
于 2009-09-17T19:10:27.697 に答える
0

何かが足りないかもしれませんが、答えようとします。

1あなたはURLを意味していると思いますか?はい、クライアントオブジェクトを作成するときにできます

var service = new Acmeco.AcmecoService();
service.Url = "oneUrlOrTheOther;   

2どういう意味ですか?参照を追加するときは、一意の名前空間に配置する名前を付ける必要があります。前の例のAcmecoのように。

3そのようなものは、あなたが言及するその5%の違いの何に依存しますか?2つの異なるホスト上の同じWebサービスのWSDLにどのように違いが生じるのかよくわかりません。アドレスだけが違うと思いますが、メソッドとパラメーターは同じままです。おそらくあなたは詳しく説明することができますか?

于 2009-09-13T18:53:35.003 に答える
0

それらの違いは何ですか?私は、SalesForce.com が非常にカスタマイズ可能であるため、サンドボックスと実稼働サイトが同一ではないことが原因だと考えています。サンドボックス サイトをテストに使用する機能を利用する場合は、この 2 つが同一である必要があります。

于 2009-09-14T02:43:58.303 に答える