Wie Salesforce WSDL-Dateien für Sandkasten und Produktionsstandorte in ASP.Net behandeln?

StackOverflow https://stackoverflow.com/questions/1418508

  •  07-07-2019
  •  | 
  •  

Frage

Ich muß zur Authentifizierung von Benutzern und Daten über sie von einer ASP.Net-Anwendung zu erhalten. Da ich zwei Seiten haben (Sandkasten, Produktion) und 2 org IDs -. Ich brauchte 2 Salesforce WSDL-Dateien zu generieren

Ich diffed die 2-Dateien (je ca. 600kb groß) und während sie 95% die gleichen sind, gibt es genug Unterschiede überall verstreut - genug für mich, sie beide verwenden zu müssen. Ich habe sowohl als Web-Verweise auf meine Lösung, und hier ist, wo mein Problem beginnt.

Natürlich, ich kann nicht beide Referenzen in der gleichen Datei verwenden, da sie die gleichen Klassen / Funktionen enthalten. Ich hatte eine schnelle und unsaubere Lösung über das Wochenende zu schreiben, so dass ich nur zwei Klassen erstellt - jeweils eine andere Web-Referenz verwendet - aber ansonsten die genaue Funktionalität, und ich verwende die entsprechenden ein, basierend auf der URL der Benutzer kommt von. Das funktioniert gut, aber scheint mir ein schlecht (sprich: quick-and-dirty) Lösung

. Meine Frage: Gibt es eine Möglichkeit, eine oder mehrere der folgenden Funktionen ausführen:

  1. die Referenzbahn ändern on the fly?
  2. verwenden, um beiden Web-Referenzen in der gleichen Datei, sondern eine in einem anderen Namespace setzen?
  3. eine bessere Lösung für die gesamte Situation finden? Ich nd mit einem riesigen XmlSerializer.dll bis (3 MB!) - wahrscheinlich auf beide großen WSDL-Dateien mit
  4. .

Vielen Dank für Ihre Zeit.

War es hilfreich?

Lösung

Eigentlich war die Lösung viel einfacher und versteckte sich unter die Nase.
Ich brauche nur zu benutzen Namespace-Aliase . Auf diese Weise kann ich beiden Dienste in der Kompilierung enthält, und entscheiden, welche zur Laufzeit verwenden:

using System.Web;
.
using ProductionAPI = MyCompany.SForce;
using SandboxAPI = MyCompany.SForce.Sandbox;
.
.
.
if(isSandbox)
  binding = new SandboxAPI.SForceService();
else
  binding = new ProductionAPI.SForceService();
.
.
.

Andere Tipps

Man könnte ich bin etwas fehlt, aber ich werde versuchen zu beantworten:

1 Ich nehme an, Sie die URL bedeuten? Ja, Sie können beim Erstellen des Client-Objekt

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

2 Was meinen Sie? Wenn Sie den Verweis hinzuzufügen haben Sie ihm einen Namen geben, die sie in einem eindeutigen Namespace stellt. Wie Acmeco im vorherigen Beispiel.

3 Diese Art hängt von ab, was in diesem 5% Unterschied, den Sie erwähnen? Ich verstehe nicht ganz, wie Sie mit einem Unterschied in der WSDL für den gleichen Webservice auf zwei verschiedenen Hosts enden. Ich würde denken, nur die Adressen unterschiedlich sein würden, aber die Methoden und Parameter würden gleich bleiben. Vielleicht können Sie ellaborate?

Was sind die Unterschiede zwischen ihnen? Ich vermute, es ist nur aht SalesForce.com sehr anpassbar ist, so dass die Sandbox und Produktionsstätten nicht identisch ist. Die beide Notwendigkeit identisch sein, wenn Sie sich die Fähigkeit nehmen werden die Sandbox-Website zum Testen verwendet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top