Comment gérer les fichiers SalesForce WSDL pour les sites de production et sandbox en ASP.Net?

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

  •  07-07-2019
  •  | 
  •  

Question

Je dois authentifier les utilisateurs et obtenir des informations à leur sujet à partir d'une application ASP.Net. Depuis que j'ai 2 sites (sandbox, production) et 2 ID d'organisation, j'avais besoin de générer 2 fichiers SalesForce WSDL.

J'ai différencié les 2 fichiers (chacun d'une taille approximative de 600 Ko) et bien qu'ils soient à 95% identiques, il y a suffisamment de différences jonchant les unes des autres - assez pour que je doive les utiliser toutes les deux. J'ai ajouté les deux références Web à ma solution, et voici où mon problème commence.

De toute évidence, je ne peux pas utiliser les deux références dans le même fichier, car elles contiennent les mêmes classes / fonctions. Comme je devais écrire une solution rapide le week-end, je venais de créer 2 classes - chacune utilisant une référence Web différente - mais sinon, la fonctionnalité exacte, et j'utilise celle qui convient, en fonction de l'URL de l'utilisateur de. Cela fonctionne bien, mais me semble être une mauvaise solution (lire: rapide et sale).

Ma question: existe-t-il un moyen de faire un ou plusieurs des choix suivants:

  1. changer la référence Web à la volée?
  2. utiliser les deux références Web dans le même fichier, mais en placer une dans un espace de noms différent?
  3. trouver une meilleure solution à toute la situation? Je trouve un très gros fichier XmlSerializer.dll (3 Mo!), Probablement dû à l’utilisation des deux fichiers WSDL énormes.

Merci de votre temps.

Était-ce utile?

La solution

En fait, la solution était beaucoup plus simple et se cachait sous mon nez.
Je devais simplement utiliser les alias d'espaces de noms . De cette façon, je peux inclure les deux services dans la compilation et décider lequel utiliser au moment de l'exécution:

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

Autres conseils

Il se peut que quelque chose me manque, mais je vais essayer de répondre:

1 Je suppose que vous voulez dire l'URL? Oui, vous le pouvez lors de la création de l'objet client

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

2 Que voulez-vous dire? Lorsque vous ajoutez la référence, vous devez lui attribuer un nom qui la place dans un espace de noms unique. Comme Acmeco dans l'exemple précédent.

3 Cela dépend en quelque sorte de la différence de 5% que vous mentionnez? Je ne comprends pas très bien comment vous vous retrouvez avec une différence dans le WSDL pour le même service Web sur deux hôtes différents. Je pense que seules les adresses seraient différentes mais que les méthodes et les paramètres resteraient les mêmes. Peut-être que vous pouvez travailler?

Quelles sont les différences entre eux? Je soupçonne que c’est juste que SalesForce.com est très personnalisable, de sorte que votre bac à sable et vos sites de production ne soient pas identiques. Les deux doivent être identiques pour pouvoir utiliser le site sandbox à des fins de test.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top