Добрый день! Решил освоить интеграцию с bpmonline 7.4 через oData. Взял пример который был на вебинаре по разработке на 7.4 и он не работает.
А конкретнее не работают методы PUT и DELETE. То есть я могу удачно авторизироваться и создать запись. Но вот при попытке удалить или изменить получаю ошибку 405 (Недопустимый метод). Я так полагаю проблема где-то в настройках iis или config файле сайта. Подскажите пожалуйста что нужно настроить.
Код полностью взят из примера, который демонстрировался в вебинаре по 7,4.
staticvoid UpdateRecord(string guid){// Создание экземпляра запроса для изменения контакта с заданным идентификатором.
var request = HttpWebRequest.Create(serverUri +"ContactCollection(guid'"+ guid +"')") as HttpWebRequest;
request.CookieContainer= bpmCookieContainer;// Для изменения записи используется метод PUT.
request.Method="PUT";
request.Accept="application/atom+xml";
request.ContentType="application/atom+xml;type=entry";// Создание сообщения xml, содержащего данные об изменяемом объекте.
var content =new XElement(dsmd +"properties", new XElement(ds +"Name", "New"));
var entry =new XElement(atom +"entry", new XElement(atom +"content", new XAttribute("type", "application/xml"), content));// Запись сообщения xml в поток запроса.using(var writer = XmlWriter.Create(request.GetRequestStream())){
entry.WriteTo(writer);}// Получение ответа от сервиса о результате выполнения операции.using(WebResponse response = request.GetResponse()){
Console.WriteLine("Данные контакта с идентификатором "+ guid +" успешно обновлены.");}}
И снова я безмерно благодарен! Всё получилось. Справочное поле стало пустым.
Но появилась другая проблема.
Дело в том, что я пишу интеграцию с сервисом работающем на framework 2.0
Я взял всё тот-же проект из примера выставил в нем framework 2.0
xml сообщение я формирую через XmlDocument тут всё хорошо. Но в этом месте:
Скрипт как-бы зависает. То есть после него совсем ничего не происходит. Никаких ошибок, но и дальше скрипт не выполняется. Просто мертвая точка. И данные в bpm не заносятся.
При чем работает только с framework 4.0. Даже с framework 3.5 не работает.
Если, ничего не меняя в коде, выставить framework 4.0 то всё проходит успешно.
Fiddler показал что запрос не отправляется в принципе. На авторизацию запрос проходит и удачно, а вот на изменение нет.
Погуглив более тщательно проблема была обнаружена. Дело всё в том что перед выполнение запроса нужно закрывать поток RequestStream. И вот framework 4.0 делает это самостоятельно перед выполнением функции GetResponse, а все фреймворки ниже не умеют этого. Поэтому перед