Como lidar com arquivos SalesForce WSDL para sites sandbox e de produção em ASP.Net?

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

  •  07-07-2019
  •  | 
  •  

Pergunta

Eu preciso autenticar os usuários e obter informações sobre eles a partir de uma aplicação ASP.Net. Desde que eu tenho 2 sites (sandbox, produção) e 2 org IDs -. I necessário para gerar 2 arquivos SalesForce WSDL

I diffed os 2 arquivos (cada um cerca de 600kb de tamanho) e enquanto eles são 95% da mesma, existem diferenças suficientes espalhados por todo o lugar - o suficiente para eu necessidade de usar os dois. Eu adicionei tanto como referências da Internet para a minha solução, e é aqui que meu problema começa.

Obviamente, eu não posso usar ambas as referências no mesmo arquivo, pois eles contêm as mesmas classes / funções. Eu tive que escrever uma solução rápida e suja no fim de semana, então eu acabamos de criar 2 classes - cada um usando uma referência da web diferente - mas por outro lado a funcionalidade exata, e eu uso o mais adequado, com base na URL que o usuário está chegando de. Isso funciona bem, mas me parece uma má (leia-se: e suja rápido). Solução

A minha pergunta: existe alguma maneira de fazer um ou mais dos seguintes:

  1. mudar a referência da web em tempo real?
  2. usar ambas as referências da web no mesmo arquivo, mas colocar um em um namespace diferente?
  3. encontrar uma melhor solução para toda a situação? I nd com um XmlSerializer.dll enorme (3MB!) - provavelmente devido ao uso de ambos os arquivos WSDL enormes
  4. .

Obrigado pelo seu tempo.

Foi útil?

Solução

Na verdade, a solução foi muito mais fácil e estava escondido debaixo do meu nariz.
Eu só precisava usar Namespace aliases . Dessa forma, posso incluir ambos os serviços em tempo de compilação, e decidir qual usar em tempo de execução:

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

Outras dicas

Pode ser que eu estou faltando alguma coisa, mas vou tentar responder:

1 Presumo que significa que o URL? Sim, você pode ao criar o objeto de cliente

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

2 O que você quer dizer? Quando você adiciona a referência que você tem que dar-lhe um nome que coloca-lo em um espaço único. Como AcmeCo no exemplo anterior.

3 Esse tipo de depende do que em que a diferença de 5% que você menciona? Eu não entendo muito bem como você acabar com a diferença no WSDL para o mesmo webservice em dois hospedeiros diferentes. Eu acho que apenas os endereços seria diferente, mas os métodos e parâmetros permaneceria a mesma. Talvez você possa ellaborate?

Quais são as diferenças entre eles? Eu suspeito que é apenas aht SalesForce.com é muito personalizável, para que seus sites sandbox e de produção não são idênticos. Os dois necessidade para ser idênticos se você estiver indo para aproveitar a capacidade de usar o site sandbox para testar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top