Имя: Пароль:
1C
1С v8
веб сервис 1С не работает через клиента на C#
,
0 AaNnDdRrEeYy
 
15.04.13
16:08
в 1С 8.2 создал тестовый веб сервис нормально работает если делать запрос из другой 1С но если сделать запрос из клиента на C# выдает ошибку

The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Basic realm="1C:Enterprise 8.2"'.

логин и пароль указываю так (это логин пользователя из 1С)
 client.ClientCredentials.UserName.UserName = "admin";
 client.ClientCredentials.UserName.Password = "1";

что то я не пойму это 1С меня не пускает или веб сервер?
1 HeroShima
 
15.04.13
16:16
Протокол не соблюдается.
2 AaNnDdRrEeYy
 
15.04.13
16:19
я биндинг ручками писал
//тайминги
           binding.CloseTimeout = new TimeSpan(0, 1, 0);
           binding.OpenTimeout = new TimeSpan(0, 1, 0);
           binding.ReceiveTimeout = new TimeSpan(0, 1, 0);
           binding.SendTimeout = new TimeSpan(0, 1, 0);

         
           //формат сообщений
           binding.MessageEncoding = WSMessageEncoding.Text;
           binding.TextEncoding = Encoding.UTF8;
           binding.TransferMode = TransferMode.Buffered;

           //размеры сообщений
           binding.MaxReceivedMessageSize = 2147483647;
           binding.MaxBufferPoolSize = 2147483647;
           binding.ReaderQuotas.MaxStringContentLength = 1000000000;

           //доступ
           binding.AllowCookies = false;

          // binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;

           binding.Security.Mode = BasicHttpSecurityMode.None;
           
           

           EndpointAddress endAdres = new EndpointAddress("http://test/test1/ws/testWS.1cws?wsdl");

         
           ServiceReference1.TestWSPortTypeClient client = new TestWSPortTypeClient(binding, endAdres);



           client.ClientCredentials.UserName.UserName = "admin";
           client.ClientCredentials.UserName.Password = "1";

           client.Open();

Вот тут client.state = Opened

ошибка когда метод вызываю
client.SomeMethod();
3 AaNnDdRrEeYy
 
15.04.13
16:21
какой именно протокол не соблюдается? сервис виден только не пускает в метод, говорит The HTTP request is unauthorized with client authentication scheme 'Anonymous' - анонимно не прошел чегото там.
4 AaNnDdRrEeYy
 
15.04.13
16:22
Думаю потому что имя порта не указано
третий параметр
СоздатьWSПрокси(<URIПространстваИменСервиса>, <ИмяСервиса>, <ИмяПорта>)

как его указать не в 1С?
5 HeroShima
 
15.04.13
16:23
(4) айпи хоть правильный?
6 zladenuw
 
15.04.13
16:24
7 AaNnDdRrEeYy
 
15.04.13
16:27
(5) да правильный, он законсперированный, на самом деле другой  но он точно правильный.
8 AaNnDdRrEeYy
 
15.04.13
16:27
(6) это уже видел, там в Приложение 2 - бред полнейший.
9 HeroShima
 
15.04.13
16:38
Если уверен что стучишь куда нужно, возьми снифер и сравни обмены.
10 AaNnDdRrEeYy
 
16.04.13
13:38
разобрался, свойство PreAuthenticate надо в true ставить, иначе он даже не пробует логинится.
11 manserg
 
01.05.13
15:03
Столкнулся с аналогичной проблеймой утентификации.
Service Reference сгенерил автоматом, биндинг не менял, только задал ClientCredentials.UserName.UserName и ClientCredentials.UserName.Password.
web-service развернут в Apache.
Где и как устанавливать параметр PreAuthenticate?
12 sikuda
 
20.05.13
14:39
В POST запросе установи типа Authorization: "Basic c2lrdWRhd3M6MTIzNDU2" и проходит http://sikuda.ru/identifikatsiya-web-servisov-1s/
13 manserg
 
21.05.13
01:39
(12) Спасибо, засада в том, что я использую Service Reference и .NET 4.5  а там пока не нашел как делать custom запрос.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн