Я столкнулся со странным поведением, и я уверен, что это связано с моим кодом, а не с экземпляром RTC, с которым я работаю.
У меня есть настройка и настройка веб-запроса:
var cookies = new CookieContainer();
var request = (HttpWebRequest)WebRequest.Create(getCreationFactoryUri);
var xmlString = getRDF.ToString();
request.CookieContainer = cookies;
request.Accept = "application/rdf+xml";
request.Method = "POST";
request.ContentType = "application/rdf+xml";
request.Headers.Add("OSLC-Core-Version", "2.0");
request.Timeout = 40000;
request.KeepAlive = true;
byte[] bytes = Encoding.ASCII.GetBytes(xmlString);
request.ContentLength = bytes.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(bytes, 0, bytes.Length);
dataStream.Close();
Это передается другому методу, написанному на основе примера RTC с использованием проверки подлинности форм для RTC.
В соответствии со спецификацией OSLC v2 я использую URL-адрес фабрики создания для публикации. Я знаю, что URL-адрес в порядке, потому что я настроил вызов с помощью RESTClient в Firefox. Добавил необходимые заголовки (Content-Type: application/rdf+xml, Accept: application/rdf+xml, OSLC-Core-Version: 2.0) и использовал сгенерированный XML, который пытается передать мой код. Мой ручной вызов работает отлично, и билет создается.
В своих журналах я зафиксировал ответ от RTC, который представляет собой список заявок, а не ответ, показывающий, что моя заявка создается. Я могу воссоздать это поведение, выполнив GET для URL-адреса фабрики создания, который я использую для создания билета на событие.
Поэтому, хотя я знаю, что отправляю POST на фабрику создания (я отладил, чтобы убедиться, что мой метод веб-запроса был на 100% установлен на «POST»), RTC вместо этого возвращает список билетов, и я могу только сделать вывод, что мой запрос обрабатывается как «ПОЛУЧИТЬ».
В качестве теста я изменил свой запрос на использование PUT вместо POST. Это не разрешено для использования в URL-адресе фабрики создания, и при тестировании это действительно вызывает ошибку. Поэтому я совершенно возмущен тем, почему RTC не создает мой билет, а вместо этого обрабатывает мой запрос как GET и возвращает список билетов.
У кого-нибудь есть идеи?
Спасибо.