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> IIS 7.0에 대한 별도의 다운로드인 WebDAV 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 게시를 선택합니다. 다음을 클릭합니다.
    웹 DAV 게시가 선택된 상태에서 확장된 웹 서버 및 일반 H TT P 기능 창의 이미지입니다.
  5. 기능 선택 페이지에서 다음을 클릭합니다.
  6. 설치 선택 확인 페이지에서 설치를 클릭합니다.
  7. Results(결과) 페이지에서 Close(닫기)를 클릭합니다.

Windows 8 또는 Windows 8.1

  1. 시작 화면에서 포인터를 왼쪽 아래 모서리로 이동하고 시작 단추를 마우스 오른쪽 단추로 클릭한 다음 제어판 클릭합니다.
  2. 제어판프로그램 및 기능을 클릭한 다음 Windows 기능 켜기 또는 끄기를 클릭합니다.
  3. 인터넷 정보 서비스를 확장하고, World Wide Web Services를 확장하고, 일반적인 HTTP 기능을 확장한 다음, WebDAV 게시를 선택합니다.
    웹 DAV 게시가 선택된 상태에서 확장된 Windows 기능 켜기 또는 끄기 페이지의 일반적인 H T TP 기능 창 이미지.
  4. 확인을 클릭합니다.
  5. 닫기를 클릭합니다.

Windows Server 2008 R2

  1. 작업 표시줄에서 시작을 클릭하고 관리 도구를 가리킨 다음 서버 관리자 클릭합니다.
  2. 서버 관리자 계층 구조 창에서 역할을 확장한 다음 웹 서버(IIS)를 클릭합니다.
  3. 웹 서버(IIS) 창에서 Role Services 섹션으로 스크롤한 다음 역할 서비스 추가를 클릭합니다.
  4. 역할 서비스 추가 마법사역할 서비스 선택 페이지에서 일반적인 HTTP 기능을 확장하고 WebDAV 게시를 선택한 다음 다음을 클릭합니다.
    웹 DAV 게시가 선택된 역할 서비스 선택 페이지의 일반적인 H T TP 기능 노드 스크린샷
  5. 설치 선택 확인 페이지에서 설치를 클릭합니다.
  6. Results(결과) 페이지에서 Close(닫기)를 클릭합니다.

Windows 7

  1. 작업 표시줄에서 시작을 클릭한 다음 제어판 클릭합니다.
  2. 제어판프로그램 및 기능을 클릭한 다음 Windows 기능 켜기 또는 끄기를 클릭합니다.
  3. 인터넷 정보 서비스, World Wide Web Services, 일반 HTTP 기능을 차례로 확장합니다.
  4. WebDAV 게시를 선택한 다음 확인을 클릭합니다.
    Web DAV 게시가 선택된 상태에서 Windows 기능 켜기 또는 끄기 페이지에서 확장된 World Wide Web Services 및 일반 H T T P 기능 창의 이미지.

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 사용을 클릭합니다.
    웹 DAV 사용 옵션을 표시하는 웹 DAV 제작 규칙 페이지의 작업 창 이미지

참고

WebDAV 게시를 사용하도록 설정한 후에는 사용자 또는 그룹이 서버에 콘텐츠를 게시하기 전에 제작 규칙을 추가해야 합니다. 제작 규칙을 만드는 방법에 대한 자세한 내용은 항목을 참조 authoringRules 하세요.

구성

요소는 <authoring> ApplicationHost.config 파일의 사이트 수준에서만 구성할 수 있습니다. 다른 수준 또는 Web.config 파일의 모든 <authoring> 요소는 무시됩니다.

특성

attribute Description
compatFlags 선택적 flags 특성입니다.

WebDAV의 호환성 옵션을 지정합니다. 이전 버전의 Microsoft WebDAV 구현에서 사용된 몇 가지 동작이 있으며 이 특성의 플래그는 새 WebDAV 모듈에서 구현할 동작을 지정합니다.

compatFlags 특성에는 다음 값 중 하나 이상이 있을 수 있습니다. 둘 이상의 값을 지정하는 경우 쉼표(,)로 구분합니다. 기본값은 MsAuthorVia, MultiProp, CompactXml, IsHidden, IsCollection입니다.
Description
None 호환성 옵션을 사용하면 안 됩니다.

숫자 값은 입니다 0.
MsAuthorVia

WebDAV 모듈이 WebDAV 클라이언트에 "MS-Author-Via" 헤더를 반환해야 하는지 여부를 지정합니다.

참고: 일부 WebDAV 클라이언트는 이 헤더를 예상합니다.

숫자 값은 입니다 1.

MultiProp WebDAV 요청에서 여러 <prop> 문을 허용할지 여부를 지정합니다.

참고: 이는 RFC 4918을 위반하지만 일부 이전 WebDAV 구현은 이 구문을 지원했습니다.


숫자 값은 입니다 2.
CompactXml WebDAV 모듈에서 반환되는 XML의 형식을 계층적으로 지정할지 여부를 지정합니다.

참고: 일반적으로 WebDAV 모듈은 CRLF 문자 없이 들여쓰기 없이 XML 응답을 반환합니다. 이렇게 하면 유선으로 전송되는 데이터의 크기를 줄이지만 XML 파서 없이는 읽기가 매우 어렵습니다.

숫자 값은 입니다 4.
IsHidden IsHidden 의사 라이브 속성이 지원되도록 지정합니다.

참고: 이 속성은 RFC 4918에 정의되지 않은 비공식 표준입니다.

숫자 값은 입니다 8.
IsCollection IsCollection 의사 라이브 속성이 지원되도록 지정합니다.

참고: 이 속성은 RFC 4918에 정의되지 않은 비공식 표준입니다.

숫자 값은 입니다 16.
enabled 선택적 부울 특성입니다.

WebDAV 작성을 사용하도록 설정하면 true이고, 그렇지 않으면 false입니다.

기본값은 false입니다.
maxAllowedXmlRequestLength 선택적 uint 특성입니다.

WebDAV 요청에 대한 요청 XML 본문의 최대 길이(바이트)를 지정합니다.

참고: 이 특성은 WebDAV 7.5 및 IIS 7.5에 추가되었습니다.

기본값은 1000000입니다.
requireSsl 선택적 부울 특성입니다.

WebDAV 작성에 SSL이 필요한 경우 true이고, 그렇지 않으면 false입니다. WebDAV 작성에 SSL을 요구하면 보안 계층이 추가되지만 각 요청에 대한 처리 오버헤드가 추가됩니다.

기본값은 false입니다.

자식 요소

요소 Description
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 작성을 사용하도록 설정하고 WebDAV 작성에 SSL이 필요하지 않도록 사이트를 구성합니다.

AppCmd.exe

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

참고

AppCmd.exe 사용하여 이러한 설정을 구성할 때 commit 매개 변수 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 사용하여 이러한 설정을 구성할 때 commit 매개 변수 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 속성 설정을 구성하고 기본 제공 webdav_simple_prop 공급자에 매핑된 기본 XML 네임스페이스를 사용하여 사용자 지정 속성을 사용하도록 설정합니다.

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 사용하여 이러한 설정을 구성할 때 commit 매개 변수 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()