asp.net의 샌드 박스 및 생산 사이트 용 Salesforce WSDL 파일을 처리하는 방법은 무엇입니까?

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

  •  07-07-2019
  •  | 
  •  

문제

ASP.NET 응용 프로그램에서 사용자를 인증하고 정보를 얻어야합니다. 2 개의 사이트 (샌드 박스, 프로덕션)와 2 개의 조직 ID가 있으므로 2 개의 Salesforce WSDL 파일을 생성해야했습니다.

나는 2 개의 파일 (크기가 약 600kb)을 확산 시켰고, 그것들은 95% 동일하지만, 모든 곳에 흩어져있는 충분한 차이가 있습니다. 둘 다 사용할 수있을만큼 충분합니다. 솔루션에 대한 웹 참조로 둘 다 추가했으며 여기에 문제가 시작되는 곳이 있습니다.

분명히 동일한 클래스/함수를 포함하므로 동일한 파일에서 두 참조를 모두 사용할 수 없습니다. 주말 동안 빠른 솔루션을 작성해야했기 때문에 2 개의 클래스 (각각 다른 웹 참조를 사용하는 2 개의 클래스)를 만들었지 만 정확한 기능을 사용했으며 사용자가 오는 URL을 기반으로 적절한 기능을 사용합니다. 에서. 이것은 잘 작동하지만 저를 나쁜 (읽기 : 빠른) 솔루션으로칩니다.

내 질문 : 다음 중 하나 이상을 수행 할 수있는 방법이 있습니까?

  1. 웹 참조를 즉시 변경 하시겠습니까?
  2. 동일한 파일에 두 웹 참조를 사용하지만 하나를 다른 네임 스페이스에 넣으시겠습니까?
  3. 전체 상황에 대한 더 나은 해결책을 찾으십니까? 거대한 xmlserializer.dll (3MB!)을 사용하여 - 아마도 큰 WSDL 파일을 사용했기 때문일 것입니다.

시간 내 줘서 고마워.

도움이 되었습니까?

해결책

실제로, 해결책은 훨씬 쉬웠고 코 아래에 숨어있었습니다.
방금 사용해야했습니다 네임 스페이스 별칭. 이렇게하면 컴파일 타임에 두 서비스를 모두 포함시킬 수 있으며 런타임에 사용할 것인지 결정할 수 있습니다.

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

다른 팁

내가 뭔가를 놓치고 있을지 모르지만 대답하려고 할 것입니다.

1 URL을 의미한다고 생각합니까? 예, 클라이언트 객체를 만들 때 할 수 있습니다

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

2 무슨 말이야? 참조를 추가 할 때는 고유 한 네임 스페이스에 넣는 이름을 주어야합니다. 이전 예제에서 Acmeco와 같습니다.

3 그런 종류의 5% 차이에서 언급 한 것에 달려 있습니까? 나는 두 개의 다른 호스트에서 동일한 웹 서비스에 대한 WSDL의 차이로 끝나는 방법을 이해하지 못합니다. 주소 만 다를 것이라고 생각하지만 방법과 매개 변수는 동일하게 유지됩니다. 아마도 당신은 타원 할 수 있습니까?

그들 사이의 차이점은 무엇입니까? AHT Salesforce.com은 매우 사용자 정의 가능이므로 샌드 박스와 생산 사이트가 동일하지 않도록합니다. 둘 필요 테스트를 위해 샌드 박스 사이트를 사용할 수있는 기능을 활용하려면 동일합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top