Форум программистов, компьютерный форум, киберфорум
C#: Веб-сервисы, WCF
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.61/847: Рейтинг темы: голосов - 847, средняя оценка - 4.61
1 / 1 / 0
Регистрация: 16.12.2015
Сообщений: 1
.NET 4.x

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ

16.12.2015, 11:46. Показов 177953. Ответов 999

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Передо мной стоит задача интеграции с системой ГИС ЖКХ (https://dom.gosuslugi.ru/) программой, написанной на языке C#, .NET Framework 4
Данный сервис предоставляет SOAP веб-сервисы для приема и передачи информации, соединение защищается сертификатом по алгоритму ГОСТ. Каждый элемент внутри тела SOAP сообщения подписывается сигнатурой XAdES-BES.
На данный момент для осуществления защищённого соединения я использую «МагПро КриптоТуннель» (stunnel) со следующими настройками:
Конфигурация stunnel (stunnel.conf)
verify=2
client=yes
CAFile=CA-test2-cryptopro.pem
engine=gost
usb_eject=yes
sslVersion=TLSv1
taskbar=yes
DEBUG=7

[pseudo-https]
protocol = http
accept = 127.0.0.1:8754
connect = 54.76.42.99:60045
ciphers = GOST2001-GOST89-GOST89
TIMEOUTclose = 0
cert=test.pem
key=test.key

Для обмена SOAP сообщениями я использую стандартный сервис WCF с прокси-классами, сгенерированные из WSDL файлов. Для подписи SOAP сообщений сигнатурой использую ниже представленный класс:
C#. Класс для подписи исходного SOAP сообщения
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
class ServiceClientBehavior : IEndpointBehavior, IClientMessageInspector
{
    public object BeforeSendRequest(ref Message request, IClientChannel channel)
    {
        XmlDocument doc = new XmlDocument();
        MemoryStream ms = new MemoryStream();
        XmlWriter writer = XmlWriter.Create(ms);
        request.WriteMessage(writer);
        writer.Flush();
        ms.Position = 0;
        doc.Load(ms);
        
        SignXml(doc);
        
        ms.SetLength(0);
        writer = XmlWriter.Create(ms);
        doc.WriteTo(writer);
        writer.Flush();
        ms.Position = 0;
        XmlReader reader = XmlReader.Create(ms);
        request = Message.CreateMessage(reader, int.MaxValue, request.Version);
 
        return null;
    }
    
    void SignXml(XmlDocument doc)
    {
        doc.PreserveWhitespace = true;
 
        // Получение элемента из тела сообщения
        var requestNode = doc.DocumentElement.ChildNodes[1].ChildNodes[0];
        var signRequestNode = SignRequest(requestNode);
 
        var body = requestNode.ParentNode;
        body.RemoveChild(requestNode);
        body.AppendChild(signRequestNode);
    }
    XmlNode SignRequest(XmlNode reqNode)
    {
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.PreserveWhitespace = true;
        xmlDoc.AppendChild(xmlDoc.ImportNode(reqNode, true));
 
        var signedXml = new SignedXML(xmlDoc);
        signedXml.SigningKey = certificate.PrivateKey;
 
        KeyInfo keyInfo = new KeyInfo();
        keyInfo.AddClause(new KeyInfoX509Data(certificate));
        signedXml.KeyInfo = keyInfo;
 
        signedXml.Signature.Id = "SignatureId";
 
        #region Создание DataObject
        {
            XmlElement SignaturePropertiesRoot;
            XmlElement QualifyingPropertiesRoot;
            string xadesURI = "http://uri.etsi.org/01903/v1.3.2#";
            string dsURI = "http://www.w3.org/2000/09/xmldsig#";
 
            QualifyingPropertiesRoot = xmlDoc.CreateElement("xades", "QualifyingProperties", xadesURI);
            QualifyingPropertiesRoot.SetAttribute("Target", "#SignatureId");
 
            SignaturePropertiesRoot = xmlDoc.CreateElement("xades", "SignedProperties", xadesURI);
            SignaturePropertiesRoot.SetAttribute("Id", "SignedPropertiesId");
 
            XmlElement SignedSignatureProperties = xmlDoc.CreateElement("xades", "SignedSignatureProperties", xadesURI);
 
            XmlElement timestamp = xmlDoc.CreateElement("xades", "SigningTime", xadesURI);
            timestamp.InnerText = XmlConvert.ToString(DateTimeOffset.Now);
            SignedSignatureProperties.AppendChild(timestamp);
 
            XmlElement SigningCertificate = xmlDoc.CreateElement("xades", "SigningCertificate", xadesURI);
            XmlElement Cert = xmlDoc.CreateElement("xades", "Cert", xadesURI);
            XmlElement CertDigest = xmlDoc.CreateElement("xades", "CertDigest", xadesURI);
 
            XmlElement DigestMethod = xmlDoc.CreateElement("ds", "DigestMethod", dsURI); DigestMethod.SetAttribute("Algorithm", "http://www.w3.org/2001/04/xmldsig-more#gostr3411");
            XmlElement DigestValue = xmlDoc.CreateElement("ds", "DigestValue", dsURI); DigestValue.InnerText = ComputeGostHash(this.ClientCertificate.RawData);
            CertDigest.AppendChild(DigestMethod);
            CertDigest.AppendChild(DigestValue);
            Cert.AppendChild(CertDigest);
 
            XmlElement IssuerSerial = xmlDoc.CreateElement("xades", "IssuerSerial", xadesURI);
            XmlElement X509IssuerName = xmlDoc.CreateElement("ds", "X509IssuerName", dsURI); X509IssuerName.InnerText = GetIssuerName(certificate);
            XmlElement X509SerialNumber = xmlDoc.CreateElement("ds", "X509SerialNumber", dsURI); X509SerialNumber.InnerText = GetSerialNumber(certificate);
            IssuerSerial.AppendChild(X509IssuerName);
            IssuerSerial.AppendChild(X509SerialNumber);
            Cert.AppendChild(IssuerSerial);
 
            SigningCertificate.AppendChild(Cert);
            SignedSignatureProperties.AppendChild(SigningCertificate);
 
            SignaturePropertiesRoot.AppendChild(SignedSignatureProperties);
            QualifyingPropertiesRoot.AppendChild(SignaturePropertiesRoot);
            DataObject dataObject = new DataObject
            {
                Data = QualifyingPropertiesRoot.SelectNodes("."),
            };
            signedXml.AddObject(dataObject);
        }
        #endregion
 
        signedXml.SignedInfo.SignatureMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411";
        signedXml.SignedInfo.CanonicalizationMethod = "http://www.w3.org/TR/2001/REC-xml-c14n-20010315";
 
        var reference = new Reference();
        reference.Uri = "#RequestId";
        reference.DigestMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr3411";
        reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
        reference.AddTransform(new XmlDsigExcC14NTransform());
        signedXml.AddReference(reference);
 
        reference = new Reference();
        reference.Uri = "#SignedPropertiesId";
        reference.DigestMethod = "http://www.w3.org/2001/04/xmldsig-more#gostr3411";
        reference.Type = "http://uri.etsi.org/01903#SignedProperties";
        reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
        reference.AddTransform(new XmlDsigExcC14NTransform());
        signedXml.AddReference(reference);
 
        signedXml.ComputeSignature();
 
        XmlElement signatureNode = signedXml.GetXml();
        xmlDoc.DocumentElement.PrependChild(xmlDoc.ImportNode(signatureNode, true));
 
        if (!VerifyXml(xmlDoc))
            throw new Exception("Подпись не проходит проверку.");
        return reqNode.OwnerDocument.ImportNode(xmlDoc.DocumentElement, true);
    }
}

В результате после подписи элемента "exportNsiItemRequest" SOAP-сообщение выглядит следующим образом:
XML. Подписанное SOAP сообщение
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Header>
        <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">urn:exportNsiItem</Action>
        <h:RequestHeader xmlns="http://dom.gosuslugi.ru/schema/integration/7.1.0.2/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:h="http://dom.gosuslugi.ru/schema/integration/7.1.0.2/">
            <Date>2015-12-16T16:12:47.9885439+10:00</Date>
            <MessageGUID>c7a1d946-9fcf-4ebc-9c08-20ebe81179cf</MessageGUID>
            <SenderID>387142bd-4ff7-4d15-ab09-18b3d99fd9bd</SenderID>
        </h:RequestHeader>
    </s:Header>
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <exportNsiItemRequest Id="RequestId" xmlns="http://dom.gosuslugi.ru/schema/integration/7.1.0.2/nsi/">
            <Signature Id="SignatureId" xmlns="http://www.w3.org/2000/09/xmldsig#">
                <SignedInfo>
                    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
                    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411" />
                    <Reference URI="#RequestId">
                        <Transforms>
                            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
                            <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
                        </Transforms>
                        <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" />
                        <DigestValue>fpTlCLCz9/78q4Zpng9eAiCZuaHP51fCXfllN2TeFPw=</DigestValue>
                    </Reference>
                    <Reference URI="#SignedPropertiesId" Type="http://uri.etsi.org/01903#SignedProperties">
                        <Transforms>
                            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
                            <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
                        </Transforms>
                        <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" />
                        <DigestValue>9sBDvpcyxJLVxibQGy280Rz/MlcESescb6k6MEGKreQ=</DigestValue>
                    </Reference>
                </SignedInfo>
                <SignatureValue>...</SignatureValue>
                <KeyInfo>
                    <X509Data>
                        <X509Certificate>...</X509Certificate>
                    </X509Data>
                </KeyInfo>
                <Object>
                    <xades:QualifyingProperties Target="#SignatureId" xmlns:xades="http://uri.etsi.org/01903/v1.3.2#">
                        <xades:SignedProperties Id="SignedPropertiesId">
                            <xades:SignedSignatureProperties>
                                <xades:SigningTime>2015-12-16T16:13:13.4750017+10:00</xades:SigningTime>
                                <xades:SigningCertificate>
                                    <xades:Cert>
                                        <xades:CertDigest>
                                            <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" />
                                            <ds:DigestValue xmlns:ds="http://www.w3.org/2000/09/xmldsig#">B2/4UjEeZwUG0c+mlEfnAZIy8mlbGpkOp4L+jPkgcVY=</ds:DigestValue>
                                        </xades:CertDigest>
                                        <xades:IssuerSerial>
                                            <ds:X509IssuerName xmlns:ds="http://www.w3.org/2000/09/xmldsig#">cn=CRYPTO-PRO Test Center 2,o=CRYPTO-PRO LLC,l=Moscow,c=RU,1.2.840.113549.1.9.1=support@cryptopro.ru</ds:X509IssuerName>
                                            <ds:X509SerialNumber xmlns:ds="http://www.w3.org/2000/09/xmldsig#">401416565317479933092244230678231137456309019</ds:X509SerialNumber>
                                        </xades:IssuerSerial>
                                    </xades:Cert>
                                </xades:SigningCertificate>
                            </xades:SignedSignatureProperties>
                        </xades:SignedProperties>
                    </xades:QualifyingProperties>
                </Object>
            </Signature>
            <RegistryNumber>221</RegistryNumber>
        </exportNsiItemRequest>
    </s:Body>
</s:Envelope>

Проблема заключается в том, что ответ от сервера приходит следующий:
ru.lanit.security.crypto.CryptoException : ЭП не прошла проверку: Invalid XML Signature
Текст ответного сообщения следующий:
XML. SOAP-ответ от сервера
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<soap:Envelope xmlns:ns2="http://dom.gosuslugi.ru/schema/integration/7.1.0.2/" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#" xmlns:ns5="http://dom.gosuslugi.ru/schema/integration/7.1.0.2/nsi/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
        <ns2:ResultHeader>
            <ns2:Date>2015-12-16T09:14:28.819+03:00</ns2:Date>
            <ns2:MessageGUID>c7a1d946-9fcf-4ebc-9c08-20ebe81179cf</ns2:MessageGUID>
        </ns2:ResultHeader>
    </soap:Header>
    <soap:Body>
        <ns5:exportNsiItemResult Id="signed-data-container">
            <ds:Signature Id="xmldsig-3208628d-03cc-4576-895d-ea6d78b1b6dd" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                <ds:SignedInfo>
                    <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
                    <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411" />
                    <ds:Reference URI="#signed-data-container">
                        <ds:Transforms>
                            <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
                            <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
                        </ds:Transforms>
                        <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" />
                        <ds:DigestValue>iqCeIlUfsqxdZRuMTjvYKWBTVOtSNrJIYledBG8LrWA=</ds:DigestValue>
                    </ds:Reference>
                    <ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#xmldsig-3208628d-03cc-4576-895d-ea6d78b1b6dd-signedprops">
                        <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" />
                        <ds:DigestValue>yASmvpbUBqEPr1Vp+qzYjXhzzXymC9ggqUZZ8GbBVkI=</ds:DigestValue>
                    </ds:Reference>
                </ds:SignedInfo>
                <ds:SignatureValue>...</ds:SignatureValue>
                <ds:KeyInfo>
                    <ds:X509Data>
                        <ds:X509Certificate>...</ds:X509Certificate>
                    </ds:X509Data>
                </ds:KeyInfo>
                <ds:Object>
                    <xades:QualifyingProperties Target="#xmldsig-3208628d-03cc-4576-895d-ea6d78b1b6dd" xmlns:xades="http://uri.etsi.org/01903/v1.3.2#">
                        <xades:SignedProperties Id="xmldsig-3208628d-03cc-4576-895d-ea6d78b1b6dd-signedprops">
                            <xades:SignedSignatureProperties>
                                <xades:SigningTime>2015-12-16T09:14:28.870+03:00</xades:SigningTime>
                                <xades:SigningCertificate>
                                    <xades:Cert>
                                        <xades:CertDigest>
                                            <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gostr3411" />
                                            <ds:DigestValue>Sz5+eJyswooXj8h3A5bhMbPG61QPExSKXuw+ZLzyeQ8=</ds:DigestValue>
                                        </xades:CertDigest>
                                        <xades:IssuerSerial>
                                            <ds:X509IssuerName>cn=CRYPTO-PRO Test Center 2,o=CRYPTO-PRO LLC,l=Moscow,c=RU,1.2.840.113549.1.9.1=support@cryptopro.ru</ds:X509IssuerName>
                                            <ds:X509SerialNumber>401416477754091206680439394611221196150735163</ds:X509SerialNumber>
                                        </xades:IssuerSerial>
                                    </xades:Cert>
                                </xades:SigningCertificate>
                            </xades:SignedSignatureProperties>
                        </xades:SignedProperties>
                    </xades:QualifyingProperties>
                </ds:Object>
            </ds:Signature>
            <ns2:ErrorMessage>
                <ns2:ErrorCode>AUTH01105</ns2:ErrorCode>
                <ns2:Description>Ошибка формата подписи запроса</ns2:Description>
                <ns2:StackTrace>ru.lanit.hcs.integration.common.exception.OperationProcessorException: ЭП не прошла проверку: Invalid XML Signature</ns2:StackTrace>
            </ns2:ErrorMessage>
        </ns5:exportNsiItemResult>
    </soap:Body>
</soap:Envelope>


Подскажите пожалуйста:
1) Как сделать валидную подпись, которая будет проходить проверку сервером, используя WCF ?
2) Как с помощью средств CryptoPro.NET отказаться от использования «МагПро КриптоТуннель» ?
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.12.2015, 11:46
Ответы с готовыми решениями:

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (3)
Предыдущая тема: https://www.cyberforum.ru/web-services-wcf/thread1776736.html Кто нибудь знает откуда брать справочники NsiRef по...

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (5)
Предыдущая тема: https://www.cyberforum.ru/web-services-wcf/thread1840159.html И так мы Я и umatkot, Берёмся за реализацию всего этого...

Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (4)
Предыдущая тема: https://www.cyberforum.ru/web-services-wcf/thread1800721.html Здравствуйте. Подскажите, пожалуйста: делаю getState...

999
0 / 0 / 0
Регистрация: 10.12.2015
Сообщений: 18
01.03.2016, 13:50
Студворк — интернет-сервис помощи студентам
У меня одного проблема с ними сейчас на СИТ?
Выдает "Зарегистрированная организация по SenderID не совпадает с зарегистрированной организацией, указанной в сертификате открытого ключа" даже на те запросы, где SenderID не предусмотрен. Например на NsiCommon.exportNsiItem или RegOrgCommon.exportOrgRegistry.
0
3 / 3 / 0
Регистрация: 11.02.2016
Сообщений: 17
01.03.2016, 14:06
Цитата Сообщение от lonely_tramp Посмотреть сообщение
У меня одного проблема с ними сейчас на СИТ?
В версии 8.6.0.4 для сервисов NsiCommon и RegOrgCommon используется ISRequestHeader, наследованный от HeaderType. В нём нет SenderID.
Проверено - работает.
0
0 / 0 / 0
Регистрация: 10.12.2015
Сообщений: 18
01.03.2016, 14:26
Springer,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private exportOrgRegistryResult getOrgRegistry(exportOrgRegistryRequestSearchCriteria searchCriteria)
        {
            using (var proxy = new GISGKH.RegOrgCommon.RegOrgPortsTypeClient("RegOrgCommonPort"))
            {
                proxy.ClientCredentials.UserName.UserName = "test";
                proxy.ClientCredentials.UserName.Password = @"pwd";
                exportOrgRegistryRequest req = new exportOrgRegistryRequest();
                req.SearchCriteria = new[] { searchCriteria };
 
                req.Id = "signed-data-container";
                var header = new GISGKH.RegOrgCommon.HeaderType
                {
                    Date = DateTime.Now,
                    MessageGUID = Guid.NewGuid().ToString(),
                };
                exportOrgRegistryResult res = new exportOrgRegistryResult();
                try
                {
                    proxy.exportOrgRegistry(header, req, out res);
                    return res;
                }
                catch (Exception error)
                {
                    MessageBox.Show(error.ToString());
                    return null;
                }
            }
        }
Дело в том что вчера все работало, код не менял.

Если не подписывать сообщение, то выдает ошибку подписи.
"Ошибка формата подписи запроса Элемент c Id 'signed-data-container' не подписан."

Добавлено через 2 минуты
Разобрался. Они тихо и молчком обновились без смены версии. Теперь если req.Id указан, то он автоматом ищет подпись. Если нет подписи - ругается. Если есть подпись - тоже ругается. Для этих сообщений нельзя указывать req.Id и соответственно подписывать их тоже нельзя.
0
3 / 3 / 1
Регистрация: 17.01.2015
Сообщений: 15
01.03.2016, 14:35
Подскажите пожалуйста, как побороть ошибку "System.Security.Authentication.Authenti cationException: Удаленный сертификат недействителен согласно результатам проверки подлинности", получается сертификат сервера не проходит валидность?
0
3 / 3 / 0
Регистрация: 11.02.2016
Сообщений: 17
01.03.2016, 14:54
Цитата Сообщение от lonely_tramp Посмотреть сообщение
Они тихо и молчком обновились без смены версии.
В общем-то при наличии Id без подписи и раньше не работало. По крайней мере со времён версии 7.0.0.10
Сейчас все сервисы позволяют работать без подписи (при пустом Id). А нигде не упоминается, станет ли в будущем подпись сообщения обязательной?

Добавлено через 2 минуты
Цитата Сообщение от Acturus Посмотреть сообщение
сертификат сервера не проходит валидность?
Net.ServicePointManager.ServerCertificat eValidationCallback назначен?
1
0 / 0 / 0
Регистрация: 10.12.2015
Сообщений: 18
01.03.2016, 15:03
Цитата Сообщение от Springer Посмотреть сообщение
В общем-то при наличии Id без подписи и раньше не работало.
А сейчас и с подписью не работает. Как вариант может у меня с подписью проблема сегодня сама появилась. До этого места еще не добрался.
0
3 / 3 / 1
Регистрация: 17.01.2015
Сообщений: 15
01.03.2016, 15:18
Цитата Сообщение от Springer Посмотреть сообщение
Net.ServicePointManager.ServerCertificat eValidationCallback назначен?
Спасибо помогло, но теперь прилетает System.ServiceModel.FaultException: FMT001300: Некорректный XML ))
0
3 / 3 / 0
Регистрация: 11.02.2016
Сообщений: 17
01.03.2016, 15:20
Цитата Сообщение от Acturus Посмотреть сообщение
Некорректный XML
Очень вероятно - ошибка из-за смены номера версии. В крайнем случае, всё видно в описании ошибки в сообщении SOAP.
0
0 / 0 / 0
Регистрация: 10.12.2015
Сообщений: 18
01.03.2016, 15:37
Цитата Сообщение от lonely_tramp Посмотреть сообщение
Как вариант может у меня с подписью проблема сегодня сама появилась. До этого места еще не добрался.
Проблем с подписью нет.
Вывод: не надо указывать атрибут Id у подписываемого элемента и подписывать его тоже не надо, в сообщениях где подпись не обязательна.
0
4 / 4 / 0
Регистрация: 17.02.2016
Сообщений: 13
02.03.2016, 10:12
Velocity_, Добрый день. Только включаюсь в работу с гис жкх.
1. Установил stunnel. stunnel.conf:
verify=2
client=yes
CAFile=..\crypto\CA-SIT.pem
cert=..\crypto\test.pem
key=..\crypto\test.key
engine=cryptocom
engineCtrl=RNG:PROGRAM
engineCtrl=RNG_PARAMS:seed
error_image=error.png
usb_eject=yes
;output=stunnel.log
sslVersion=TLSv1
taskbar=yes
cert_warn_days=30
EBUG=7

[pseudo-https]
protocol = http
accept = 127.0.0.1:8080
connect = 54.76.42.99:60045
ciphers = GOST2001-GOST89-GOST89
TIMEOUTclose = 0

2. Скачал Soap UI 5.2.1
3. New Soap Project->Add WSDL->Выбрал hcs-organizations-registry-common-service-8.6.0.4.wsdl с опций CrreateRequests
4. В exportOrgRegistry в Request1 указал
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://dom.gosuslugi.ru/schema/integration/8.6.0.4/" xmlns:org="http://dom.gosuslugi.ru/schema/integration/8.6.0.4/organizations-registry-common/" xmlns:xd="http://www.w3.org/2000/09/xmldsig#">
   <soapenv:Header>
      <ns:ISRequestHeader>
         <ns:Date>2016-03-02T05:12:47.9885439+10:00</ns:Date>
         <ns:MessageGUID>c7a1d946-9fcf-4ebc-9c08-20ebe81179c</ns:MessageGUID>
      </ns:ISRequestHeader>
   </soapenv:Header>
   <soapenv:Body>
      <org:exportDataProviderRequest>   
         <org:SearchCriteria>
           <ns:OGRN>1082723010589</ns:OGRN>
        </org:SearchCriteria>
      </org:exportDataProviderRequest>   
   </soapenv:Body>
</soapenv:Envelope>
5. Authorization->Add Authorization->Basic->username=test,password=SDldfls4lz5@!8 2d
6.Endpoint https://127.0.0.1:8080/ext-bus... gRegistry/
7.Выполнить
И ничего. Вернее ошибка 400. Как вам удалось получить ответ от системы ?
Миниатюры
Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ  
0
3 / 3 / 0
Регистрация: 28.09.2011
Сообщений: 9
02.03.2016, 12:32
Изменил в адресе https на http. Запрос прошел, но ответ с ошибкой:
XML
1
2
3
4
5
6
<faultstring>FMT001300: Line: 4. Column: 1. Message: cvc-complex-type.2.4.a: Invalid content was found starting with element 'nsate'. One of '{"http://dom.gosuslugi.ru/schema/integration/8.6.0.4/":Date}' is expected.</faultstring>
         <detail>
            <ns4:Fault>
               <ns4:ErrorCode>FMT001300</ns4:ErrorCode>
               <ns4:ErrorMessage>Line: 4. Column: 1. Message: cvc-complex-type.2.4.a: Invalid content was found starting with element 'nsate'. One of '{"http://dom.gosuslugi.ru/schema/integration/8.6.0.4/":Date}' is expected.</ns4:ErrorMessage>
               <ns4:StackTrace>ru.lanit.hcs.integration.common.exception.SoapFaultException: ru.lanit.hcs.integration.common.exception.XmlValidationException: Line: 4. Column: 1. Message: cvc-complex-type.2.4.a: Invalid content was found starting with element 'nsate'. One of '{"http://dom.gosuslugi.ru/schema/integration/8.6.0.4/":Date}' is expected.
Update:
Поле с датой неправильно скопировалось, но все равно в вашем запросе есть ошибка в поле MessageGUID - в последней группе символов должно быть 12 символов. С исправленным запросом получил ответ:
XML
1
2
3
4
5
6
7
8
9
10
<soap:Envelope xmlns:ns4="http://dom.gosuslugi.ru/schema/integration/8.6.0.4/" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns5="http://dom.gosuslugi.ru/schema/integration/8.6.0.4/organizations-registry/">
   <soap:Body>
      <soap:Fault>
         <faultcode>soap:Server</faultcode>
         <faultstring>FMT001300: Некорректный XML</faultstring>
         <detail>
            <ns4:Fault>
               <ns4:ErrorCode>FMT001300</ns4:ErrorCode>
               <ns4:ErrorMessage>Некорректный XML</ns4:ErrorMessage>
               <ns4:StackTrace>ru.lanit.hcs.integration.common.exception.SoapFaultException: java.lang.IllegalStateException: Invalid body: class org.apache.xerces.dom.ElementNSImpl
1
13 / 13 / 0
Регистрация: 25.01.2016
Сообщений: 38
02.03.2016, 17:55
lonely_tramp, У меня с подписью проходит с указанием req.Id, если подписываю сертификатом ИС (транспортным)
1
4 / 4 / 0
Регистрация: 17.02.2016
Сообщений: 13
03.03.2016, 01:53
zevs151, Ффух, поправил как вы сказали - получил ответ с ошибкой ! Ну наконец-то. Хоть какое-то начало. Спасибо огромное ! Полез копаться дальше.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://dom.gosuslugi.ru/schema/integration/8.6.0.4/" xmlns:org="http://dom.gosuslugi.ru/schema/integration/8.6.0.4/organizations-registry-common/" xmlns:xd="http://www.w3.org/2000/09/xmldsig#">
   <soapenv:Header>
      <ns:ISRequestHeader>
         <ns:Date>2016-03-03T08:35:00</ns:Date>
         <ns:MessageGUID>cfd2608-919f-4b76-8a52-b03094139e60</ns:MessageGUID>
      </ns:ISRequestHeader>
   </soapenv:Header>
   <soapenv:Body>
      <org:exportDataProviderRequest>   
         <org:SearchCriteria>
           <ns:OGRN>1082723010589</ns:OGRN>
        </org:SearchCriteria>
      </org:exportDataProviderRequest>   
   </soapenv:Body>
</soapenv:Envelope>
http://127.0.0.1:8080/ext-bus-... stryCommon

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<soap:Envelope xmlns:ns4="http://dom.gosuslugi.ru/schema/integration/8.6.0.4/" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns5="http://dom.gosuslugi.ru/schema/integration/8.6.0.4/organizations-registry-common/">
   <soap:Body>
      <soap:Fault>
         <faultcode>soap:Server</faultcode>
         <faultstring>FMT001300: Line: 5. Column: 61. Message: cvc-pattern-valid: Value 'cfd2608-919f-4b76-8a52-b03094139e60' is not facet-valid with respect to pattern '([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}' for type 'GUIDType'.</faultstring>
         <detail>
            <ns4:Fault>
               <ns4:ErrorCode>FMT001300</ns4:ErrorCode>
               <ns4:ErrorMessage>Line: 5. Column: 61. Message: cvc-pattern-valid: Value 'cfd2608-919f-4b76-8a52-b03094139e60' is not facet-valid with respect to pattern '([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}' for type 'GUIDType'.</ns4:ErrorMessage>
               <ns4:StackTrace>ru.lanit.hcs.integration.common.exception.SoapFaultException: ru.lanit.hcs.integration.common.exception.XmlValidationException: Line: 5. Column: 61. Message: cvc-pattern-valid: Value 'cfd2608-919f-4b76-8a52-b03094139e60' is not facet-valid with respect to pattern '([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}' for type 'GUIDType'.
 
    at ru.lanit.hcs.integration.common.spring.processor.ValidationProcessor.process(ValidationProcessor.java:94)
    at org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63)
    at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
    at org.apache.camel.processor.TryProcessor.process(TryProcessor.java:111)
    at org.apache.camel.processor.TryProcessor.process(TryProcessor.java:82)
    at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
    at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
    at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)
    at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:87)
    at org.apache.camel.component.cxf.CxfConsumer$1.syncInvoke(CxfConsumer.java:137)
    at org.apache.camel.component.cxf.CxfConsumer$1.invoke(CxfConsumer.java:78)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$2.run(ServiceInvokerInterceptor.java:126)
    at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:131)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:251)
    at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
    at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:293)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:212)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:268)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)
    at org.jboss.modcluster.container.jbossweb.JBossWebContext$RequestListenerValve.event(JBossWebContext.java:91)
    at org.jboss.modcluster.container.jbossweb.JBossWebContext$RequestListenerValve.invoke(JBossWebContext.java:72)
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:150)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:854)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926)
    at java.lang.Thread.run(Thread.java:745)
Caused by: ru.lanit.hcs.integration.common.exception.XmlValidationException: Line: 5. Column: 61. Message: cvc-pattern-valid: Value 'cfd2608-919f-4b76-8a52-b03094139e60' is not facet-valid with respect to pattern '([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}' for type 'GUIDType'.
 
    at ru.lanit.hcs.integration.common.spring.service.impl.SecureXmlServiceImpl.parseUntrustedXml(SecureXmlServiceImpl.java:48)
    at ru.lanit.hcs.integration.common.spring.service.impl.XmlServiceImpl.getEnvelope(XmlServiceImpl.java:73)
    at ru.lanit.hcs.integration.common.spring.processor.ValidationProcessor.process(ValidationProcessor.java:86)
    ... 46 more</ns4:StackTrace>
            </ns4:Fault>
         </detail>
      </soap:Fault>
   </soap:Body>
</soap:Envelope>
0
3 / 3 / 0
Регистрация: 28.09.2011
Сообщений: 9
03.03.2016, 05:39
Spun80, у вас опять ошибка в MessageGUID, передавайте такой заголовок:
XML
1
2
3
4
<ns:ISRequestHeader>
       <ns:Date>${=javax.xml.datatype.DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar.getInstance())}</ns:Date>
       <ns:MessageGUID>${=java.util.UUID.randomUUID()}</ns:MessageGUID>
</ns:ISRequestHeader>
1
4 / 4 / 0
Регистрация: 17.02.2016
Сообщений: 13
03.03.2016, 08:56
zevs151, Спасибо, попробовал ваш вариант - работает ! Начал гуглить документацию про javax.xml.datatype.DatatypeFactory и java.util

Добавлено через 2 минуты
Рабочий вариант exportOrgRegistry
http://127.0.0.1:8080/ext-bus-... stryCommon

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://dom.gosuslugi.ru/schema/integration/8.6.0.4/" xmlns:org="http://dom.gosuslugi.ru/schema/integration/8.6.0.4/organizations-registry-common/" xmlns:xd="http://www.w3.org/2000/09/xmldsig#">
   <soapenv:Header>
      <ns:ISRequestHeader>    
        <ns:Date>${=javax.xml.datatype.DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar.getInstance())}</ns:Date>
         <ns:MessageGUID>${=java.util.UUID.randomUUID()}</ns:MessageGUID>
     </ns:ISRequestHeader>
   </soapenv:Header>
   <soapenv:Body>
      <org:exportOrgRegistryRequest>
         <org:SearchCriteria>
            <ns:OGRN>Тут надо указать свой ОГРН</ns:OGRN>
       </org:SearchCriteria>
      </org:exportOrgRegistryRequest>
   </soapenv:Body>
</soapenv:Envelope>
Добавлено через 1 минуту
exportDataProvider

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://dom.gosuslugi.ru/schema/integration/8.6.0.4/" xmlns:org="http://dom.gosuslugi.ru/schema/integration/8.6.0.4/organizations-registry-common/" xmlns:xd="http://www.w3.org/2000/09/xmldsig#">
   <soapenv:Header>
      <ns:ISRequestHeader>
        <ns:Date>${=javax.xml.datatype.DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar.getInstance())}</ns:Date>
         <ns:MessageGUID>${=java.util.UUID.randomUUID()}</ns:MessageGUID>
      </ns:ISRequestHeader>
   </soapenv:Header>
   <soapenv:Body>
      <org:exportDataProviderRequest>   
        <org:IsActual>true</org:IsActual>
      </org:exportDataProviderRequest>   
   </soapenv:Body>
</soapenv:Envelope>
Добавлено через 1 минуту
importDataProvider

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://dom.gosuslugi.ru/schema/integration/8.6.0.4/" xmlns:org="http://dom.gosuslugi.ru/schema/integration/8.6.0.4/organizations-registry-common/" xmlns:xd="http://www.w3.org/2000/09/xmldsig#">
   <soapenv:Header>
      <ns:ISRequestHeader>
        <ns:Date>${=javax.xml.datatype.DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar.getInstance())}</ns:Date>
         <ns:MessageGUID>${=java.util.UUID.randomUUID()}</ns:MessageGUID>
      </ns:ISRequestHeader>
   </soapenv:Header>
   <soapenv:Body>
      <org:importDataProviderRequest>
        <org:DataProvider>
            <ns:TransportGUID>${=java.util.UUID.randomUUID()}</ns:TransportGUID>
            <!--You have a CHOICE of the next 2 items at this level-->
            <org:AllocateSenderID>
               <ns:RegOrg>
                  <ns:orgRootEntityGUID>Тут надо указать Guid из exportOrgRegistry</ns:orgRootEntityGUID>
               </ns:RegOrg>
            </org:AllocateSenderID>
        </org:DataProvider>
      </org:importDataProviderRequest>
   </soapenv:Body>
</soapenv:Envelope>
0
0 / 0 / 0
Регистрация: 10.12.2015
Сообщений: 18
03.03.2016, 09:38
Цитата Сообщение от Araney Посмотреть сообщение
У меня с подписью проходит с указанием req.Id, если подписываю сертификатом ИС (транспортным)
Можно подробнее? Что значит подпись сообщения транспортным сертификатом?

1. Подпись сообщения происходит сертификатом организации-поставщика информации. Сверка идет по SenderId, ОРГН из открытой части сертификата и др. параметрам. Подробная таблица проверок находится в документе Методические рекомендации по работе с СИТ п. 4.

2.Шифрование https происходит по данным открытой части сертификата который был отправлен в месте с заявкой на СИТ.

Если разработка идет для одной организации, то сертификат может быть один и тот же.
Если проект рассчитан на 1+ организацию, то для шифрования можно использовать один и тот же сертификат, а подпись сообщений каждая организация должна производить собственным сертификатом.
Поправьте, если я ошибаюсь.
0
3 / 3 / 0
Регистрация: 28.09.2011
Сообщений: 9
03.03.2016, 09:53
"Если проект рассчитан на 1+ организацию, то для шифрования можно использовать один и тот же сертификат, а подпись сообщений каждая организация должна производить собственным сертификатом."

Вроде обещали сделать отдельный сертификат для организаций обслуживающих несколько организаций, точно не помню, но узнал отсюда https://www.youtube.com/watch?v=fE5-pqrlxDQ (ближе к концу видео, сейчас нет возможности найти точное место)
0
3 / 3 / 0
Регистрация: 11.02.2016
Сообщений: 17
03.03.2016, 10:17
Цитата Сообщение от zevs151 Посмотреть сообщение
для организаций обслуживающих несколько организаций
Обещали возможность из личного кабинета делегировать полномочия передачи информации другой зарегистрированной организации. В этом направлении есть подвижки - вышел приказ № 589/944/пр в котором определён такой порядок для оператора ИС. См. разделы V, VI. Остаётся ожидать реализации в новых версиях.
http://publication.pravo.gov.r... 1602240025
0
0 / 0 / 0
Регистрация: 03.03.2016
Сообщений: 5
03.03.2016, 11:12
Подскажите, тоже нужно в 1С делать интеграцию, похожий механизм используется в типовой БГУ 2.0 (Модуль ГосУслуги) но там для подписи сообщений используется внешняя компонента. Вам удалось подписывать сообщения без ее использования?
0
3 / 3 / 0
Регистрация: 28.09.2011
Сообщений: 9
03.03.2016, 11:56
Цитата Сообщение от V_VP Посмотреть сообщение
Подскажите, тоже нужно в 1С делать интеграцию, похожий механизм используется в типовой БГУ 2.0 (Модуль ГосУслуги) но там для подписи сообщений используется внешняя компонента. Вам удалось подписывать сообщения без ее использования?
Тут с 1С не помогут, тема по .NET, я так вообще на Java пытаюсь это сделать и только по общим моментам могу помочь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.03.2016, 11:56

.NET 4.x Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (2)
Начало темы здесь: https://www.cyberforum.ru/web-services-wcf/thread1615223.html umatkot, Да, к этому и пришел....а на дворе 1 июля ...

Интеграция с ГИС ЖКХ и подпись SOAP без Крипто .NET и stunnel
Решил создать отдельную тему, так как в теме Интеграция с ГИС ЖКХ. Подпись SOAP и защита канала по ГОСТ (4) - C# WCF уже можно заблудиться....

Soap, Java, Гис ЖКХ
Добрый день! Имеет ли кто опыт работы с soap в Java? Поставлена задача наладить работу с ГИС ЖКХ, До этого не работал с SOAP, почитал все...

1С и ГИС ЖКХ. Интеграция
Доброго дня, коллеги! Я думаю многие слышали о такой ГИС, как ЖКХ. Друзья, сталкивался ли кто нибудь с задачей интеграции с этой...

Интеграция с ГИС ЖКХ (ГЖ). 400 Bad request
Вводная: 1. C#. Классы proxy для работы с API генерятся утилитой SvcUtil.exe из wsdl-ек. 2. При срабатывании форматно-логического...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Закрытая тема Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru