Пользовательская реализация WebDAV в IIS, дает 405 на PROPFIND - PullRequest
3 голосов
/ 22 сентября 2011

Я создал пользовательскую реализацию webdav с HttpHandler, чтобы обслуживать файлы в базе данных по протоколу webdav для клиента. На Cassini, моем сервере VS Development, я могу получить к нему доступ без проблем. Сейчас я пытаюсь отладить этот сайт в IIS, и это не работает. У меня удален модуль IIS 7.5 Webdav.

Некоторые фрагменты моего web.config:

<system.web>
...
<httphandlers>
 <add type="Test.WebDAVHandler, Test" verb="*" path="*"></add>
</httphandlers>
...
</system.web>
<system.webserver>
  <modules runAllManagedModulesForAllRequests="true">
      <remove name="WebDAVModule">
  </remove>
</modules>
  <validation validateIntegratedModeConfiguration="true">
<defaultdocument enabled="true">
   <files>
    <add value="example.aspx"></add>
   </files>
  </defaultdocument>
  <handlers accessPolicy="Read,Write,Execute,Script">
      <remove name="WebDAV">
   <add name=".NET Runtime" verb="*" path="*" preCondition="classicMode,runtimeVersionv2.0,bitness64" requireAccess="None" resourceType="Unspecified" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" modules="IsapiModule">
  </add>
</handlers>

 </validation>
</system.webserver>

Когда я подключаюсь к этому сайту с помощью параметра сетевого диска «Карта» Windows 7 и проверяю запросы с помощью Fiddler, я вижу, что после некоторой аутентификации клиент выполняет следующий запрос: ОПЦИИ localhost / explorer и получает следующий (сокращенный) ответ.

HTTP / 1.1 200 OK

Разрешить: ОПЦИИ, TRACE, GET, HEAD, POST

Мне не хватает некоторых разрешенных глаголов, например, PROPFIND.

Следующий запрос клиента - это PROPFIND. Сервер отвечает методом 405, что запрещено. Я посмотрел на трассировку запроса, и DefaultDocumentModule вызывает эту ошибку. Когда я отключаю этот модуль, DirectoryListingModule вызывает это 405.

Кто-нибудь знает, как это исправить, чтобы я мог использовать webdav со своим пользовательским обработчиком?

...