我使用HttpHandler创建了一个自定义webdav实现,通过webdav协议将数据库中的文件提供给客户端。 在我的VS开发服务器Cassini上,我可以毫无问题地访问它。 现在我正在尝试在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的Map network drive选项连接到此站点并使用Fiddler检查请求时,我看到经过一些身份验证后,客户端执行以下请求: 选项localhost / explorer并获得以下(缩短的)响应。
HTTP / 1.1 200确定
允许:OPTIONS,TRACE,GET,HEAD,POST
我在这里缺少一些允许的动词,比如PROPFIND。
客户端的下一个请求是PROPFIND。
服务器以不允许的405方法响应。
我查看了请求跟踪,DefaultDocumentModule
导致了此错误。
当我禁用此模块时,DirectoryListingModule
会导致此405。
有没有人知道如何解决这个问题,以便我可以将webdav用于我的自定义处理程序?