MVC を使用して単純な WebDAV サーバーを作成しようとしていますが、最終的に要求されたファイルをユーザーに提供する必要がある段階に達しました。
"webdav/{*path}"
そのパスがファイル名で終わるポイントまで、正常に機能するディレクトリ構造のトラバースを処理するルートを設定しました。この時点で、IIS はそれが静的ファイルであると判断し、ディスクからそのファイルを提供しようとしているようです。URL で指定された場所にないため、404 エラーが返されます。
URL を自由に変更することはできません。基本的には次の形式にする必要があります。そうしないと、Windows エクスプローラーがマップされたドライブとして機能しません。
GET /webdav/Test/Test2.txt
ディレクトリ構造には多くのレベルを含めることができるため、ルートを貪欲に一致するように設定しました。私も設定しましたroutes.RouteExistingFiles = true;
これは私の開発マシンで IIS Express 8.0 を使用しています。
これをテストするためだけに、空の MVC プロジェクトをセットアップするところまで行きました。これが RegisterRoutes メソッドです。
routes.RouteExistingFiles = true;
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "WebDAVGet",
url: "webdav/{*path}",
defaults: new { controller = "WebDAV", action = "Get", path = "" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index",
id = UrlParameter.Optional }
);
go to/webdav/Test/Test2
はコントローラーのブレークポイントにヒットしますが、going to/webdav/Test/Test2.txt
は 404 を返します。
助言がありますか?