c # две веб-ссылки, одна для живой на тест - PullRequest
0 голосов
/ 09 мая 2018

У меня есть проблема. Мой босс настроил тестовый веб-сервис SOAP, который он хочет использовать в нашем API. Первоначально у нас был только один, так что это было достаточно просто. Теперь у нас их два, и они находятся на разных конечных точках, поэтому я создал 2 веб-ссылки, которые выглядят так:

http://ssd -001 / tradeportal / webservices.asmx? * 1006 WSDL *

http://ssd -001 / testtradeportal / webservices.asmx? * 1011 WSDL *

Мы используем autofac, и я смог зарегистрировать сервис следующим образом:

builder.RegisterType<webServices>().As<webServices>().InstancePerDependency(); 

Я собирался создать фабричный класс для переключения между ними, но проблема у меня заключается в том, что, хотя они оба являются классом webServices, они находятся в разных пространствах имен и не имеют интерфейса или чего-либо еще. Единственное, что я смог найти, было то, что они оба наследовали от System.Web.Services.Protocols.SoapHttpClientProtocol, но при регистрации это потеряло бы любой публичный метод, который мне нужен.

Кто-нибудь знает или может придумать какие-либо предложения, которые могут помочь мне обойти эту проблему? По сути, я хочу, чтобы один класс переключался между двумя в зависимости от того, живы мы или нет, у нас в настоящее время есть флаг в файле конфигурации для этого.

1 Ответ

0 голосов
/ 09 мая 2018

Как упоминал @Zohar, веб-сервисы одинаковы; это просто URL, который отличается. Поэтому я добавил запись в свой файл web.config, а затем создал фабричный класс, подобный этому:

public static class TradePortalFactory
{
    public static webServices Create(CormarConfig config) => new webServices { Url = config.TradePortalUrl };
}

Тогда я мог бы изменить свой регистр автофактуры на это:

builder.Register(m => TradePortalFactory.Create(m.Resolve<CormarConfig>())).As<webServices>().InstancePerDependency();
...