Разработка <WebDAV>

Общие сведения

Элемент <authoring> задает параметры уровня сайта для WebDAV. Наиболее важным из этих параметров является то, включена ли для сайта разработка WebDAV. Дополнительные элементы определяют поведение модуля WebDAV, например параметры совместимости и работу модуля WebDAV со свойствами, блокировками и базовой файловой системой.

Совместимость

Версия Примечания
IIS 10.0 Элемент <authoring> не был изменен в IIS 10.0.
IIS 8,5 Элемент <authoring> не был изменен в IIS 8.5.
IIS 8,0 Элемент <authoring> не был изменен в IIS 8.0.
IIS 7,5 Элемент <authoring> поставляется как компонент IIS 7.5.
IIS 7.0 Элемент <authoring> появился в WebDAV 7.0, который был отдельной загрузкой для IIS 7.0.
IIS 6,0 Н/Д

Примечание

Модули WebDAV 7.0 и WebDAV 7.5 поставляются внеполосно для IIS 7.0, что требует загрузки и установки модулей по следующему URL-адресу:

https://www.iis.net/expand/WebDAV

В Windows 7 и Windows Server 2008 R2 модуль WebDAV 7.5 поставляется в качестве функции для IIS 7.5, поэтому скачивание WebDAV больше не требуется.

Настройка

Чтобы обеспечить поддержку публикации WebDAV для веб-сервера, необходимо установить модуль WebDAV. Для этого выполните следующие действия.

Windows Server 2012 или Windows Server 2012 R2

  1. На панели задач щелкните Диспетчер сервера.
  2. В диспетчер сервера откройте меню Управление и выберите пункт Добавить роли и компоненты.
  3. В мастере добавления ролей и компонентов нажмите кнопку Далее. Выберите тип установки и нажмите кнопку Далее. Выберите целевой сервер и нажмите кнопку Далее.
  4. На странице Роли сервера разверните узел Веб-сервер (IIS),веб-сервер, узел Общие функции HTTP, а затем выберите Публикация WebDAV. Щелкните Далее.
    Изображение области
  5. На странице Выбор компонентов нажмите кнопку Далее.
  6. На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
  7. На странице Результаты нажмите кнопку Закрыть.

Windows 8 или Windows 8.1

  1. На начальном экране переместите указатель в левый нижний угол, щелкните правой кнопкой мыши кнопку Пуск и выберите панель управления.
  2. В панель управления выберите Программы и компоненты, а затем — Включить или отключить компоненты Windows.
  3. Разверните узлы Службы IIS, Веб-службы, Общие функции HTTP, а затем выберите Публикация WebDAV.
    Изображение области общих функций H TT P на странице Включение и отключение функций Windows, развернутая с выбранным параметром Веб-публикация DAV.
  4. Нажмите кнопку ОК.
  5. Щелкните Закрыть.

Windows Server 2008 R2

  1. На панели задач нажмите кнопку Пуск, выберите Администрирование, а затем диспетчер сервера.
  2. В области иерархии диспетчер сервера разверните узел Роли и выберите Веб-сервер (IIS).
  3. На панели Веб-сервер (IIS) прокрутите страницу до раздела Службы ролей и щелкните Добавить службы ролей.
  4. На странице Выбор служб ролеймастера добавления служб ролей разверните узел Общие функции HTTP, выберите Публикация WebDAV и нажмите кнопку Далее.
    Снимок экрана: узел общих функций H TT P на странице Выбора служб ролей, развернутый с выбранным веб-публикацией DAV.
  5. На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
  6. На странице Результаты нажмите кнопку Закрыть.

Windows 7

  1. На панели задач нажмите кнопку Пуск, а затем панель управления.
  2. В панель управления выберите Программы и компоненты, а затем — Включить или отключить компоненты Windows.
  3. Разверните узел Службы IIS, затем Веб-службы, а затем Общие функции HTTP.
  4. Выберите Публикация WebDAV и нажмите кнопку ОК.
    Изображение области функций World Wide Web Services и common H T T P Features (Включение и отключение функций Windows) с выбранным параметром Web DAV Publishing (Веб-публикация DAV).

Windows Server 2008 или Windows Vista

Инструкции

Включение публикации WebDAV

  1. Откройте диспетчер служб IIS:

    • Если вы используете Windows Server 2012 или Windows Server 2012 R2:

      • На панели задач щелкните диспетчер сервера, выберите Сервис, а затем диспетчер служб IIS.
    • Если вы используете Windows 8 или Windows 8.1:

      • Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
      • Щелкните Администрирование, а затем дважды щелкните Диспетчер служб IIS.
    • Если вы используете Windows Server 2008 или Windows Server 2008 R2:

      • На панели задач нажмите кнопку Пуск, наведите указатель на пункт Администрирование, а затем выберите Пункт Диспетчер служб IIS.
    • Если вы используете Windows Vista или Windows 7:

      • На панели задач нажмите кнопку Пуск, а затем панель управления.
      • Дважды щелкните Администрирование, а затем дважды щелкните Диспетчер служб IIS.
  2. В области Подключения разверните имя сервера, а затем перейдите к сайту, приложению или каталогу, в котором требуется включить публикацию WebDAV.

  3. На панели Главная дважды щелкните Правила разработки WebDAV.
    Изображение домашней панели с выбранными правилами разработки веб-DAV.

  4. В области Действия щелкните Включить WebDAV.
    Изображение панели

Примечание

После включения публикации WebDAV необходимо добавить правила разработки, прежде чем пользователи или группы смогут публиковать содержимое на сервере. Дополнительные сведения о создании правил разработки см. в authoringRules этой статье.

Конфигурация

Элемент <authoring> можно настроить только на уровне сайта в файле ApplicationHost.config. Все <authoring> элементы на других уровнях или в файлах Web.config игнорируются.

Атрибуты

Атрибут Описание
compatFlags Необязательный атрибут flags.

Задает параметры совместимости для WebDAV. Существует несколько вариантов поведения, которые использовались в предыдущих версиях реализаций WebDAV корпорации Майкрософт, и флаги в этом атрибуте указывают, какое из этих поведений будет реализовывать новый модуль WebDAV.

Атрибут compatFlags может иметь одно или несколько из следующих возможных значений. Если указано несколько значений, разделите их запятыми (,). Значение по умолчанию — MsAuthorVia, MultiProp, CompactXml, IsHidden, IsCollection.
Значение Описание
None Не следует использовать параметры совместимости.

Числовое значение равно 0.
MsAuthorVia

Указывает, должен ли модуль WebDAV возвращать заголовок "MS-Author-Via" клиентам WebDAV.

Примечание. Некоторые клиенты WebDAV ожидают этот заголовок.

Числовое значение равно 1.

MultiProp Указывает, разрешено ли несколько <prop> инструкций в запросах WebDAV.

Примечание. Это нарушает стандарт RFC 4918, но некоторые более ранние реализации WebDAV поддерживали этот синтаксис.


Числовое значение равно 2.
CompactXml Указывает, должен ли xml, возвращаемый модулем WebDAV, форматироваться иерархически.

Примечание. Обычно модуль WebDAV просто возвращает XML-ответы без символов CRLF и без отступов. Это сокращает размер данных, передаваемых по сети, но это очень трудно читать без средства синтаксического анализа XML.

Числовое значение равно 4.
IsHidden Указывает, что должно поддерживаться псевдо-динамическое свойство IsHidden.

Примечание. Это свойство является неофициальным стандартом, который не определен в RFC 4918.

Числовое значение равно 8.
IsCollection Указывает, что должно поддерживаться псевдо-динамическое свойство IsCollection.

Примечание. Это свойство является неофициальным стандартом, который не определен в RFC 4918.

Числовое значение равно 16.
enabled Необязательный атрибут boolean .

значение true , если разработка WebDAV включена; в противном случае — false.

Значение по умолчанию — false.
maxAllowedXmlRequestLength Необязательный атрибут uint.

Указывает максимальную длину (в байтах) xml-текста запроса для запросов WebDAV.

Примечание: Этот атрибут был добавлен в WebDAV 7.5 и IIS 7.5.

Значение по умолчанию — 1000000.
requireSsl Необязательный атрибут boolean .

true , если для разработки WebDAV требуется SSL; в противном случае — false. Требование SSL для разработки WebDAV добавляет дополнительный уровень безопасности, но увеличивает затраты на обработку для каждого запроса.

Значение по умолчанию — false.

Дочерние элементы

Элемент Описание
fileSystem Необязательный элемент.

Указывает, как модуль WebDAV взаимодействует с базовой файловой системой.
locks Необязательный элемент.

Задает параметры блокировки WebDAV.
properties Необязательный элемент. Задает параметры свойства WebDAV.

Образец конфигурации

В следующем примере приведен пример <webdav> элемента для веб-сайта по умолчанию. В этом примере очищаются все существующие правила разработки, добавляется одно правило для группы администраторов, включается разработка WebDAV, указывается, что скрытые файлы разрешены, включается блокировка WebDAV и указывается поставщик блокировки, а также включается свойства WebDAV и указывается пространство имен XML по умолчанию для сопоставления свойств.

<location path="Default Web Site">
   <system.webServer>
      <webdav>
         <authoringRules defaultAccess="none" allowNonMimeMapFiles="true" defaultMimeType="text/plain">
            <clear />
            <add roles="administrators" path="*" access="Read, Write, Source" />
         </authoringRules>
         <authoring enabled="true" requireSsl="false">
            <fileSystem allowHiddenFiles="true" />
            <locks enabled="true" lockStore="webdav_simple_lock" requireLockForWriting="false" />
            <properties allowAnonymousPropfind="false" allowInfinitePropfindDepth="false" allowCustomProperties="true">
               <clear />
               <add xmlNamespace="*" propertyStore="webdav_simple_prop" />
            </properties>
         </authoring>
      </webdav>
   </system.webServer>
</location>

Пример кода

В следующих примерах включается разработка WebDAV для веб-сайта по умолчанию и настраивается сайт таким образом, чтобы ssl не требовался для разработки WebDAV.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/webdav/authoring /enabled:"True" /requireSsl:"False"  /commit:apphost

Примечание

При использовании AppCmd.exe для настройки этих параметров для параметра apphostфиксации необходимо задать значение . Это зафиксирует параметры конфигурации в соответствующем разделе расположения в файле ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();

         ConfigurationSection authoringSection = config.GetSection("system.webServer/webdav/authoring", "Default Web Site");
         authoringSection["enabled"] = true;
         authoringSection["requireSsl"] = false;

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration

      Dim authoringSection As ConfigurationSection = config.GetSection("system.webServer/webdav/authoring", "Default Web Site")
      authoringSection("enabled") = True
      authoringSection("requireSsl") = False

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var authoringSection = adminManager.GetAdminSection("system.webServer/webdav/authoring", "MACHINE/WEBROOT/APPHOST/Default Web Site");
authoringSection.Properties.Item("enabled").Value = true;
authoringSection.Properties.Item("requireSsl").Value = false;

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set authoringSection = adminManager.GetAdminSection("system.webServer/webdav/authoring", "MACHINE/WEBROOT/APPHOST/Default Web Site")
authoringSection.Properties.Item("enabled").Value = True
authoringSection.Properties.Item("requireSsl").Value = False

adminManager.CommitChanges()

В следующих примерах включается блокировка WebDAV для веб-сайта по умолчанию с помощью простого поставщика блокировки и настраивается сайт таким образом, чтобы блокировки не требовались для разработки WebDAV.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/webdav/authoring /locks.enabled:"True" /locks.lockStore:"webdav_simple_lock" /locks.requireLockForWriting:"False" /commit:apphost

Примечание

При использовании AppCmd.exe для настройки этих параметров для параметра apphostфиксации необходимо задать значение . Это зафиксирует параметры конфигурации в соответствующем разделе расположения в файле ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection authoringSection = config.GetSection("system.webServer/webdav/authoring", "Default Web Site");

         ConfigurationElement locksElement = authoringSection.GetChildElement("locks");
         locksElement["enabled"] = true;
         locksElement["lockStore"] = @"webdav_simple_lock";
         locksElement["requireLockForWriting"] = false;

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim authoringSection As ConfigurationSection = config.GetSection("system.webServer/webdav/authoring", "Default Web Site")

      Dim locksElement As ConfigurationElement = authoringSection.GetChildElement("locks")
      locksElement("enabled") = True
      locksElement("lockStore") = "webdav_simple_lock"
      locksElement("requireLockForWriting") = False

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var authoringSection = adminManager.GetAdminSection("system.webServer/webdav/authoring", "MACHINE/WEBROOT/APPHOST/Default Web Site");
var locksElement = authoringSection.ChildElements.Item("locks");
locksElement.Properties.Item("enabled").Value = true;
locksElement.Properties.Item("lockStore").Value = "webdav_simple_lock";
locksElement.Properties.Item("requireLockForWriting").Value = false;

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set authoringSection = adminManager.GetAdminSection("system.webServer/webdav/authoring", "MACHINE/WEBROOT/APPHOST/Default Web Site")
Set locksElement = authoringSection.ChildElements.Item("locks")
locksElement.Properties.Item("enabled").Value = True
locksElement.Properties.Item("lockStore").Value = "webdav_simple_lock"
locksElement.Properties.Item("requireLockForWriting").Value = False

adminManager.CommitChanges()

В следующих примерах параметры свойств WebDAV настраиваются таким образом, чтобы анонимные и бесконечные запросы свойств глубины были отключены, и включены пользовательские свойства с пространством имен XML по умолчанию, сопоставленным со встроенным поставщиком webdav_simple_prop .

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/webdav/authoring /properties.allowAnonymousPropfind:"False" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/webdav/authoring /properties.allowInfinitePropfindDepth:"False" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/webdav/authoring /properties.allowCustomProperties:"True" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/webdav/authoring /+"properties.[xmlNamespace='*',propertyStore='webdav_simple_prop']" /commit:apphost

Примечание

При использовании AppCmd.exe для настройки этих параметров для параметра apphostфиксации необходимо задать значение . Это зафиксирует параметры конфигурации в соответствующем разделе расположения в файле ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection authoringSection = config.GetSection("system.webServer/webdav/authoring", "Default Web Site");

         ConfigurationElement propertiesElement = authoringSection.GetChildElement("properties");
         propertiesElement["allowAnonymousPropfind"] = false;
         propertiesElement["allowInfinitePropfindDepth"] = false;
         propertiesElement["allowCustomProperties"] = true;

         ConfigurationElementCollection propertiesCollection = propertiesElement.GetCollection();

         ConfigurationElement addElement = propertiesCollection.CreateElement("add");
         addElement["xmlNamespace"] = @"*";
         addElement["propertyStore"] = @"webdav_simple_prop";
         propertiesCollection.Add(addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim authoringSection As ConfigurationSection = config.GetSection("system.webServer/webdav/authoring", "Default Web Site")

      Dim propertiesElement As ConfigurationElement = authoringSection.GetChildElement("properties")
      propertiesElement("allowAnonymousPropfind") = False
      propertiesElement("allowInfinitePropfindDepth") = False
      propertiesElement("allowCustomProperties") = True

      Dim propertiesCollection As ConfigurationElementCollection = propertiesElement.GetCollection

      Dim addElement As ConfigurationElement = propertiesCollection.CreateElement("add")
      addElement("xmlNamespace") = "*"
      addElement("propertyStore") = "webdav_simple_prop"
      propertiesCollection.Add(addElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var authoringSection = adminManager.GetAdminSection("system.webServer/webdav/authoring", "MACHINE/WEBROOT/APPHOST/Default Web Site");
var propertiesElement = authoringSection.ChildElements.Item("properties");
propertiesElement.Properties.Item("allowAnonymousPropfind").Value = false;
propertiesElement.Properties.Item("allowInfinitePropfindDepth").Value = false;
propertiesElement.Properties.Item("allowCustomProperties").Value = true;

var propertiesCollection = propertiesElement.Collection;

var addElement = propertiesCollection.CreateNewElement("add");
addElement.Properties.Item("xmlNamespace").Value = "*";
addElement.Properties.Item("propertyStore").Value = "webdav_simple_prop";
propertiesCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set authoringSection = adminManager.GetAdminSection("system.webServer/webdav/authoring", "MACHINE/WEBROOT/APPHOST/Default Web Site")
Set propertiesElement = authoringSection.ChildElements.Item("properties")
propertiesElement.Properties.Item("allowAnonymousPropfind").Value = False
propertiesElement.Properties.Item("allowInfinitePropfindDepth").Value = False
propertiesElement.Properties.Item("allowCustomProperties").Value = True

Set propertiesCollection = propertiesElement.Collection

Set addElement = propertiesCollection.CreateNewElement("add")
addElement.Properties.Item("xmlNamespace").Value = "*"
addElement.Properties.Item("propertyStore").Value = "webdav_simple_prop"
propertiesCollection.AddElement(addElement)

adminManager.CommitChanges()