|
Как узнать порт подключения к серверу 1С. | ☑ | ||
---|---|---|---|---|
0
The_JOhn
02.09.15
✎
19:23
|
День добрый коннекчусь по V83.COMConnector к 1С серверу
Порт нестандартный 2540 Имя базы сервера и базы получаю через СтрокаСоединенияИнформационнойБазы() но там уже фигурирует порт подключения непосредственно к базе. 2541. Вопрос, есть ли способ программно узнать порт сервера 1С (2540 который) или придется заводить константу? Спасибо. |
|||
1
Basma4
02.09.15
✎
19:58
|
||||
2
The_JOhn
03.09.15
✎
08:06
|
так мне как раз к нему и надо подключиться. если порт нестандартный, то как его узнать?
|
|||
3
Лефмихалыч
03.09.15
✎
09:12
|
COMСоединитель = Новый COMОбъект("V83.COMConnector");
СоединениеСАгентомСервера = COMСоединитель.ConnectAgent("TestSrv"); СоединениеСАгентомСервера.GetClusters()// а вот тут все кластеры с их портами |
|||
4
Лефмихалыч
03.09.15
✎
09:42
|
а вообще, это называется service discovery. Под это можно заиспользовать DNS, добавив в нее SRV-запись. И потом перед соединением получать хост и порт от службы доменных имет, ни в какие константы этого не записывая.
Внимательный читатель может сказать, что соответствие хост:порт в DNS и фактических значений придется блюсти руками и по сути это технически от константы ни чем не отличается, а просто константа - это dns. Отвечу "да" на оба замечания, но профит в этом все же есть по сравнению с константой. Но это какой-то дикий лес, руками этого делать я не пробовал, ибо понимаю пока плохо. Вот так добавить: https://technet.microsoft.com/ru-ru/library/Cc794952(v=WS.10).aspx Вот так потом прочитать: nslookup --type=SRV _appsrv1c._tcp PS _appsrv1c._tcp это придуманная из головы строчка - не надо думать, что это что-то, уже существующее в вашем сервере или еще где-то. |
|||
5
oleg_km
03.09.15
✎
12:08
|
(4) Я не нашел в винде API которое позволит создавать записи типа SRV. WMI для данного типа записи почему-то не работает. Пришлось использовать запись типа TXT
|
|||
6
Лефмихалыч
03.09.15
✎
12:43
|
(5) dnscmd /RecordAdd /help
иногда полезно ходить по ссылкам, которые в ответах тебе дают. Кроме того, это нужно раз в жизни - можно и руками в АД сделать. Да и понятнее там, я думаю, будет. |
|||
7
Лефмихалыч
03.09.15
✎
12:43
|
а, то - не тебе, извини :)
|
|||
8
Лефмихалыч
03.09.15
✎
12:44
|
(5) а читаешь потом чем? nslookup-ом же или какие-нить wmi есть?
|
|||
9
oleg_km
03.09.15
✎
13:49
|
(8) ну пишет у меня служба 1С, а читает потом другая прога на C#. Просто если и пишет и читает приложения одной конфигурации 1С, то проще хранить тогда где-нибудь в базе 1С
|
|||
10
Лефмихалыч
03.09.15
✎
13:52
|
(9) проще технически, да. Но в результате встанет вопрос санации бэкапов и тестовых баз, чтобы горя потом не хапнуть, года тестовая база ломанется в продуктивную среду делать неописуемое зло
|
|||
11
Лефмихалыч
03.09.15
✎
13:54
|
если вместо протокола использовать ИД окружения, которое как-то вычисляется в полете, то можно добиться того, что продуктивные базы будут запрашивать (например) записи
_1cappsrv._prod а тестовые _1cappsrv._dev если изобрести (а это не сложно) способ вычислять правильно прод и дев в полете. |
|||
12
oleg_km
03.09.15
✎
14:37
|
(11) Тоже такое есть.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |