вынести Namespace вебсервиса в конфиг файл, с подтягиванием данных при старте приложения. Соединение SOAP в проекте .net framework
Всем привет. Есть клиент 1С, который синхронизирован с приложением через SOAP. К 1С я доступа не имею, как оттуда идут запросы не знаю. На принимающей стороне у меня есть код: [WebService(Namespace = "http://test-server/")] Один и тот же проект разворачивается на тестовой среде и на продуктиве. Так же 1с дает запросы на тестовую среду и на продуктив вида: http://test-server/1cMethod на тестовый и http://prod-server/1cMethodна продуктиве. Из за этого мне приходится на тестовый сервер заливать одно приложение, потом менять неймспейс, перебилдивать и заливать на продуктив. Так дело не пойдет, есть ли возможность вынести значение этого namespace в конфиг файл? Знаю что namespace это не имя сервера, но ручки 1С я поменять не могу, поэтому надо подстроиться под их наименования. Пробовал сделать так:
<add key="SOAPNameSpaceValue" value="http://test-server/" />
в конфиг файле, а в классе синхронизации так: [WebService(Namespace = ConfigurationManager.AppSettings["SOAPNameSpaceValue"]] , но после этого выдает ошибку:
CS0182 – An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type
Вот, не знаю как победить. Любой совет будет полезен
Ответы (1 шт):
Всем спасибо. Походу это тупик, и выхода нет)
В аннотации должна быть только переменная типа const. Const должна быть известна при запуске приложения, т.е. ее нельзя получить из внешнего файла(конфига). И значит у нас 2 выхода, либо каждый раз пересобирать проект, либо менять "ручки" на стороне 1С.