Web Rarely

The things that interest people most are usually none of their business.

An Extensible WebDAV Server for .NET


A couple years ago I needed to serve some data over WebDAV in order to interface with Office, which can edit documents on a WebDAV server. I looked around for a free WebDAV server that I could use or extend, but as usual none fit the bill. Of the free WebDAV servers, most could serve only files on disk whereas I needed to serve dynamic data; most presented data as read-only whereas I needed clients to be able to lock and edit it; and most were rudimentary, buggy, and highly noncompliant with the standard. Only two servers claimed to have most of the features I wanted, but they were proprietary and expensive, and they probably weren't as good in reality as their advertising made them seem. So I set out to design and build my own WebDAV server.

I wanted a server that could expose dynamic, hierarchical data from another .NET project over WebDAV, that was robust and standards-compliant, and that supported editing and collaboration with multiple users. I decided to design an extensible WebDAV server that allows new data sources and services to be implemented easily and that allows existing data sources and services to be extended by third parties. The end result is not only highly standards-compliant, but it supports many optional and required but rarely implemented features as well, such as transparent compression, partial transfers, partial updates, locking, editing, dead properties, strong typing in property values, request preconditions, and more. It's generic enough that it can be used as a general HTTP server, not only a WebDAV server. And it's built on ASP.NET so that it can be easily integrated into existing setups.

In an earlier version of this post, here followed more information about the server, but the WebDAV server has now gotten its own page. Go there if you'd like more information.


No comments yet.

Add a comment

Note: The information you enter (including your name and email address) will be displayed publicly.

Line breaks are converted to <br>'s, and all HTML tags except b, u, i, tt, and pre are filtered out.