WebDAV 文件系统 <fileSystem>

概述

<authoring> 元素的 <fileSystem> 元素指定 WebDAV 模块如何与基础文件系统交互。 更具体地说,<fileSystem> 元素包含的属性定义了文件操作是否应该是事务性的,以及是否在属性请求中返回隐藏文件或虚拟目录,这通常用于目录列表。

兼容性

版本 说明
IIS 10.0 <fileSystem> 元素在 IIS 10.0 中未进行修改。
IIS 8.5 <fileSystem> 元素在 IIS 8.5 中未进行修改。
IIS 8.0 <fileSystem> 元素在 IIS 8.0 中未进行修改。
IIS 7.5 <authoring> 元素的 <fileSystem> 元素作为 IIS 7.5 的功能提供。
IIS 7.0 <authoring> 元素的 <fileSystem> 元素是在 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。

安装

若要支持 Web 服务器的 WebDAV 发布,必须安装 WebDAV 模块。 为此,请按照以下步骤操作。

Windows Server 2012 或 Windows Server 2012 R2

  1. 在任务栏上,单击 “服务器管理器”。
  2. 在“服务器管理器”中,单击“管理”菜单,然后单击“添加角色和功能”。
  3. 在“添加角色和功能”向导中,单击“下一步”。 选择安装类型,然后单击“下一步”。 选择目标服务器,然后单击“下一步”。
  4. 在“服务器角色”页,依次展开“Web 服务器 (IIS)”、“Web 服务器”和“常见 HTTP 功能”,然后选择“WebDAV 发布”。 单击 “下一步”
    Screenshot shows Web Server and Common H T T P Features pane expanded with Web DAV Publishing selected.
  5. 在“选择功能”页上,单击“下一步”
  6. “确认安装选择”页上,单击“安装”
  7. 在“结果” 页面中单击“关闭”

Windows 8 或 Windows 8.1

  1. 在“开始”屏幕上,将指针一直移动到左下角,右键单击“开始”按钮,然后单击“控制面板”
  2. 在“控制面板”中,单击“程序与功能”,然后单击“打开或关闭 Windows 功能”。
  3. 依次展开“Internet Information Services”、“万维网服务”和“常见 HTTP 功能”,然后选择“WebDAV 发布”。
    Screenshot of Common H T T P Features pane in Turn Windows features on or off page displaying Web DAV Publishing selected.
  4. 单击“确定”。
  5. 单击“关闭” 。

Windows Server 2008 R2

  1. 在任务栏上,单击“开始”,指向“管理工具”,然后单击“服务器管理器”。
  2. 在“服务器管理器”层次结构窗格中,展开“角色”,然后单击“Web 服务器(IIS)”。
  3. 在“Web 服务器 (IIS)”窗格中,滚动到“角色服务”部分,然后单击“添加角色服务”。
  4. 在“添加角色服务向导”的“选择角色服务”页,展开“常见 HTTP 功能”,选择“WebDAV 发布”,然后单击“下一步”。
    Screenshot shows Select Role Services page in Add Role Services Wizard with Web DAV Publishing selected from Common H T T P Features pane.
  5. “确认安装选择”页中,单击“安装”
  6. 在“结果” 页面中单击“关闭”

Windows 7

  1. 在任务栏上,单击“开始”,然后单击“控制面板”。
  2. 在“控制面板”中,单击“程序与功能”,然后单击“打开或关闭 Windows 功能”。
  3. 依次展开“Internet Information Services”、“万维网服务”和“常见 HTTP 功能”
  4. 选择“WebDAV 发布”,然后单击“确定”。
    Screenshot displays Common H T T P Features pane expanded and Web DAV Publishing selected.

Windows Server 2008 或 Windows Vista

操作方式

如何允许 WebDAV 响应中列出隐藏的文件

  1. 打开 Internet Information Services (IIS) 管理器:

    • 如果使用的是 Windows Server 2012 或 Windows Server 2012 R2:

      • 在任务栏上,单击“服务器管理器”,单击“工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows 8 或 Windows 8.1:

      • 按住 Windows 键,按字母 X,然后单击“控制面板”。
      • 单击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
    • 如果使用的是 Windows Server 2008 或 Windows Server 2008 R2:

      • 在任务栏上,单击“开始”,指向“管理工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows Vista 或 Windows 7:

      • 在任务栏上,单击“开始”,然后单击“控制面板”。
      • 双击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
  2. 在“连接”窗格中,展开服务器名称,然后转到要在其中启用 WebDAV 发布的站点、应用程序或目录

  3. 在“主页”窗格中,双击“WebDAV 创作规则”。
    Screenshot of Web DAV Authoring Rules feature in Home pane. Web DAV Settings is displayed in Actions pane.

  4. 在“操作”窗格中,单击“WebDAV 设置...”

  5. 在“WebDAV 设置”窗格中,如果希望在属性响应中返回隐藏文件的属性,请为“允许列出隐藏文件”选择“True”。否则,请选择 False。
    Screenshot of Web DAV Settings pane With Allow Hidden Files to be Listed option set to True. Apply option is shown in the Actions pane.

  6. 在“操作”窗格中,单击“应用”

配置

<fileSystem> 元素只能在 ApplicationHost.config 文件中的服务器级别进行配置。 如果 <fileSystem> 元素是在其他级别定义的,或是包含在 Web.config 文件中,则将被忽略。

特性

属性 说明
allowHiddenFiles 可选的 Boolean 属性。 如果 WebDAV 将在对属性请求的响应中显示隐藏文件,则为 true;否则为 false

注意:尽管某些文件在属性请求中是隐藏的,但仍然可以直接请求这些文件。 例如,如果你隐藏了网站的 Web.config 文件,则该文件将不会显示在目录列表中,但如果你知道该路径存在,则仍然可以在基于 WebDAV 的编辑器中打开该文件。 默认值为 false
useTransactionalIo 可选的 Boolean 属性。 useTransactionalIo 属性指定文件操作是否应是事务性的。 例如,事务性处理有助于定义在发生下列情况时,服务器应执行的操作:客户端发送一系列文件的 MOVE(移动)请求,但目标在整个操作完成之前就用完了存储空间。 启用事务处理后,整个操作应失败。 禁用事务处理后,该操作将仅部分成功,并且文件将在源和目标之间分发。

设置为 false 时,WebDAV 模块将不会强制执行任何形式的事务处理。 设置为 true 时,如果基本文件系统无法处理事务,则 WebDAV 模块会通过失败操作来强制执行事务处理。 默认值为 false
hideChildVirtualDirectories 可选的 Boolean 属性。

如果对 WebDAV 请求隐藏虚拟目录,则为 true;否则为 false

注意:此属性已添加到 WebDAV 7.5 和 IIS 7.5 中

默认值为 false

子元素

无。

配置示例

以下示例列出了默认网站的示例 <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 文件系统设置,以便在属性查询响应中返回隐藏文件和虚拟目录。

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/webdav/authoring /fileSystem.allowHiddenFiles:"True" /fileSystem.hideChildVirtualDirectories:"True" /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 fileSystemElement = authoringSection.GetChildElement("fileSystem");
         fileSystemElement["allowHiddenFiles"] = true;
         fileSystemElement["hideChildVirtualDirectories"] = true;

         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 fileSystemElement As ConfigurationElement = authoringSection.GetChildElement("fileSystem")
      fileSystemElement("allowHiddenFiles") = True
      fileSystemElement("hideChildVirtualDirectories") = True

      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 fileSystemElement = authoringSection.ChildElements.Item("fileSystem");
fileSystemElement.Properties.Item("allowHiddenFiles").Value = true;
fileSystemElement.Properties.Item("hideChildVirtualDirectories").Value = true;

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 fileSystemElement = authoringSection.ChildElements.Item("fileSystem")
fileSystemElement.Properties.Item("allowHiddenFiles").Value = True
fileSystemElement.Properties.Item("hideChildVirtualDirectories").Value = True

adminManager.CommitChanges()