При попытке сериализации объекта в XML с помощью RestSharp, который содержит атрибут xmlns на корневом узле, я получаю следующее исключение:
Префикс '' не может быть переопределен с '' на ' https://someurl.com ' в пределах одного и того же тега элемента запуска.
Объект, который я пытаюсь сериализовать, содержит только одно свойство (на данный момент), пространство XmlNamespace:
[SerializeAs(Name = "root")]
public class Root
{
[SerializeAs(Name = "xmlns", Attribute = true)]
public String XmlNamespace { get; set; }
}
Исключение возникает при попытке добавить мой объект в тело запроса, например:
Root requestBody = new Root();
requestBody.XmlNamespace = "https://someurl.com";
var request = new RestRequest();
request.Method = Method.POST;
request.Resource = "orders";
request.RequestFormat = DataFormat.Xml;
request.AddBody(requestBody); // exception occurs here
Я попытался использовать свойство XmlNamespace для RestRequest, а также создать экземпляр нового XmlSerializer для RestRequest, но ни один из них не добавил пространство имен в корневой узел, как того требует API, к которому я пытаюсь получить доступ. Кто-нибудь знает, как правильно сериализовать атрибут xmlns в RestSharp?
Я нашел ответ. Похоже, я был отброшен наличием свойств XmlNamespace на уровне запросов и XmlSerializer. Для любого другого, кто сталкивается с этой проблемой, исправление заключалось в определении пространства имен при вызове метода AddBody следующим образом:
request.AddBody(requestBody, "https://someurl.com");