Я пытаюсь использовать LINQ to XML для записи запросов для сервера WebDAV, но у меня возникла проблема, когда LINQ устанавливает пространство имен по умолчанию (xmlns = "bla"
), которое, похоже, не поддерживается от WebDAV.Linq to XML Отключить пространство имен по умолчанию
XNamespace ns = "d";
var content = new XElement(ns + "propfind"
,new XAttribute(XNamespace.Xmlns + "d", "DAV:")
,new XElement(ns + "allprops"));
Ожидаемый результат:
<d:propfind xmlns:d="DAV:"><d:allprop /></d:propfind>
Но независимо от того, как я пытаюсь сериализации (даже с XElement.Save(someStream, SaveOptions.DisableFormatting)
) Я всегда получаю это, не поддерживается сервером WebDav Я пытаюсь ударить ,
<propfind xmlns:d="DAV:" xmlns="d"><allprop /></propfind>
Ahh ok спасибо. Поэтому, если я правильно понимаю, я все еще использую пространство имен DAV во всех моих определениях, и сериализация будет понимать, что он должен использовать псевдоним, который я предоставляю как 'd' – NtscCobalt
@NtscCobalt: Да - хотя он также будет по умолчанию для элемента и потомков, поэтому, если вы не захотите * псевдоним, просто полностью удалите атрибут ... –
Хорошо имеет смысл. Да, в этом случае мне нужен псевдоним. IIS дает мне 400, если DAV устанавливается как пространство имен по умолчанию для корневого элемента. – NtscCobalt