Я создал пользовательскую реализацию 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 со своим пользовательским обработчиком?