создать веб-сервис в Visual Studio с динамическим корневым URL - PullRequest
0 голосов
/ 23 октября 2018

Я хочу создать приложение C #, которое взаимодействует с двумя веб-сервисами SOAP.Эти веб-сервисы (файлы WSDL) используют один и тот же URL

<root>/...dirPath.../dms.cfc?wsdl
<root>/...dirPath.../cobra.cfc?wsdl

<root> должен быть динамическим, поскольку пользователь приложения должен установить эту переменную.

Прежде всего, я взял это

Как динамически переключать адреса веб-служб в .NET без перекомпиляции?

и пробовал это

https://www.codeproject.com/Articles/12317/How-to-make-your-Web-Reference-proxy-URL-dynamic

Далее янашел эту ссылку

https://docs.microsoft.com/en-us/sql/reporting-services/report-server-web-service/net-framework/setting-the-url-property-of-the-web-service?view=sql-server-2017

, но эти ссылки не помогли. Я не могу найти настройки URL behaviour и не могу получить доступ к свойству URL по коду.

Я создал статический класс, который должен обрабатывать оба веб-сервиса.Пользователь может изменить корневой URL-адрес веб-службы.

Пример URL-адреса:

http://localhost:8500/CoBRA/...dirPath.../dms.cfc?wsdl

или

http://myInstance.com/CoBRA/...dirPath.../dms.cfc?wsdl

обрабатывается этим кодом

public static class CoBRAService
    {
        private static cobraClient cobraBaseClient = new cobraClient();

        private static dmsClient cobraDmsClient = new dmsClient();

        public static void SetWebserviceRootUrl(string rootUrl)
        {
            // cobraBaseClient.url = $"{rootUrl}/path/dms.cfc?wsdl";
            // cobraDmsClient.url = $"{rootUrl}/path/cobra.cfc?wsdl";
        }
    }

Оба веб-сервиса не наследуются от System.Web.Services.Protocols.SoapHttpClientProtocol Они реализуют это public partial class cobraClient : System.ServiceModel.ClientBase<MyProject.CoBRA_Base.cobra>, MyProject.CoBRA_Base.cobra

Это структура моего проекта

enter image description here

Где можно установить URL-адрес веб-службы или как получить доступ к свойству url?

1 Ответ

0 голосов
/ 23 октября 2018

если ваши "CoBRA_BaseClient" и "CoBRA_DMSClient" унаследованы от System.ServiceModel.ClientBase , тогда вы можете попробовать следующее:

public static CoBRA_BaseClient CreateService()
{
    CoBRA_BaseClient service = new CoBRA_BaseClient();
    service.Endpoint.Address = new EndpointAddress("uri");
    return service;
}

public static CoBRA_DMSClient CreateService()
{
    CoBRA_DMSClient service = new CoBRA_DMSClient();
    service.Endpoint.Address = new EndpointAddress("uri");
    return service;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...