Вопрос начинающего. Что нужно: послать запрос из внешнего (Internet) bpm'a во внутренний с ИНН клиента на предмет наличия такового. Делаю это через OData. Код задания-сценария:
/*static readonly XNamespace ds = "http://schemas.microsoft.com/ado/2007/08/dataservices"; static readonly XNamespace dsmd = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"; static readonly XNamespace atom = "http://www.w3.org/2005/Atom";*/ bool flag = false; string requestUri = "https://server/0//ServiceModel/EntityDataService.svc/"+ "ContactCollection?$filter= INN eq '1111111111'&$select=INN"; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; var request = HttpWebRequest.Create(requestUri) as HttpWebRequest; request.Method = "GET"; request.Credentials = new NetworkCredential("login", "password"); using (var response = request.GetResponse()) { XDocument xmlDoc = XDocument.Load(response.GetResponseStream()); var contacts = xmlDoc.Descendants("entry").Select(x => new { INN = x.Element("content").Element("m:properties"). Element("d:INN").Value }); if (contacts.Count() > 0) { flag = true; } } Set("flag",flag); return true;
Исходящий параметр flag добавила, библиотеки System.Net, System.Linq, System.Xml, System.Xml.Linq подключила. Максимально захардкодила. В Visual Studio работает, а при переносе в bpm - нет. К логам доступа пока нет. Схема процесса в bpm
Нравится
Добрый день!
А внутренний bpm опубликован на внешку, т.е. доступен вне вашей сети?
И есть какая нибудь информация об ошибке (в журнале БП)?
Особых проблем в вашем коде не вижу.
Сидоров Александр В., спасибо за ответ. Внутренний - только в локальной сети. А в Журнал БП мой процесс не попадает. А возможно ли вообще достучаться из Интернета в локалку?
Лисовец Татьяна,
Нет, достучаться не получится. Стенд должен быть опубликован: т.е. развернут может быть внутри (на мощностях в вашей локальной сети), но должен иметь внешний адрес
Если ко внутреннему сайту нет доступа извне, то подключиться не получится, независимо от использованного ПО, хоть то браузер, хоть другой сайт.
А если доступ всё же есть, но что-то работает не так, то лучше смотреть не в журнале процессов (я так понял, на «внешнем» сайте), а в логах HTTP-сервера «внутреннего» сайта, где должны быть видны все HTTP-запросы к сайту и их результаты.
В коде смущает, что используете basic-аутентификацию, а не отдельный запрос к AuthService.svc. Базовая тоже допустима для OData, но имеет недостатки.
Зверев Александр,
спасибо за совет. А в логах на сервере такая вот ошибка:
System.ComponentModel.Win32Exception (0x80004005): The system cannot find the file specified
Я перенаправила запрос сервера сам на себя. Он же так должен сработать? Но ситуация та же
Вообще, это обычно пишет из-за отсутствия доступа к SQL-серверу с базой данных. Но непонятно, как Вы такое получили при обращении к сайту по OData. Возможно, из полного текста ошибки будет понятнее.