Как работать с файлами SalesForce WSDL для песочницы и рабочих сайтов в ASP.Net? - PullRequest
2 голосов
/ 13 сентября 2009

Мне нужно аутентифицировать пользователей и получать информацию о них из приложения ASP.Net. Поскольку у меня есть 2 сайта (песочница, производство) и 2 идентификатора организации - мне нужно было сгенерировать 2 файла SalesForce WSDL.

Я просмотрел 2 файла (каждый размером около 600 КБ), и, хотя они на 95% одинаковы, повсюду разбросано достаточно различий - достаточно, чтобы мне понадобилось использовать их оба. Я добавил обе ссылки в качестве веб-ссылки к своему решению, и вот здесь начинается моя проблема.

Очевидно, что я не могу использовать обе ссылки в одном файле, поскольку они содержат одинаковые классы / функции. В выходные я должен был написать быстрое и грязное решение, поэтому я просто создал 2 класса, каждый из которых использует свою веб-ссылку, но в остальном точную функциональность, и я использую соответствующий, основываясь на URL-адресе пользователя от. Это хорошо работает, но кажется мне плохим (читай: быстро и грязно) решением.

Мой вопрос: есть ли способ сделать одно или несколько из следующих действий:

  1. изменить веб-ссылку на лету?
  2. использовать обе веб-ссылки в одном файле, но поместить их в другое пространство имен?
  3. найти лучшее решение для всей ситуации? Я обнаружил огромный XmlSerializer.dll (3 МБ!), Вероятно, из-за использования обоих огромных файлов WSDL.

Спасибо за ваше время.

Ответы [ 3 ]

2 голосов
/ 17 сентября 2009

На самом деле, решение было намного проще и скрывалось у меня под носом.
Мне просто нужно было использовать псевдонимы пространства имен . Таким образом, я могу включить обе службы во время компиляции и решить, какие использовать во время выполнения:

using System.Web;
.
using ProductionAPI = MyCompany.SForce;
using SandboxAPI = MyCompany.SForce.Sandbox;
.
.
.
if(isSandbox)
  binding = new SandboxAPI.SForceService();
else
  binding = new ProductionAPI.SForceService();
.
.
.
0 голосов
/ 14 сентября 2009

В чем различия между ними? Я подозреваю, что это просто настраиваемый SalesForce.com, так что ваши песочница и производственные сайты не идентичны. Для двух необходимо, чтобы были идентичными, если вы собираетесь воспользоваться возможностью использовать сайт песочницы для тестирования.

0 голосов
/ 13 сентября 2009

Возможно, я что-то упустил, но я постараюсь ответить:

1 Я полагаю, вы имеете в виду URL? Да, вы можете при создании объекта клиента

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

2 Что вы имеете в виду? Когда вы добавляете ссылку, вы должны дать ей имя, которое помещает ее в уникальное пространство имен. Как и Acmeco в предыдущем примере.

3 Это зависит от того, какую разницу в 5% вы упомянули? Я не совсем понимаю, как вы получаете различие в WSDL для одного и того же веб-сервиса на двух разных хостах. Я думаю, что будут отличаться только адреса, но методы и параметры останутся прежними. Возможно, вы можете разработать?

...