Owin UseStaticFiles不尊重RequestPath

Ian*_*cer 8 owin

**编辑:注意:这似乎是在Owin StaticFiles中间件的更高版本中修复的,所以如果你有这个探测器,只需升级**

我的OWIN配置有: -

   string root = AppDomain.CurrentDomain.BaseDirectory;
   var staticFilesOptions = new StaticFileOptions();
   staticFilesOptions.RequestPath = new PathString("/foo");
   staticFilesOptions.FileSystem = new PhysicalFileSystem(Path.Combine(root, "web"));
   app.UseStaticFiles(staticFilesOptions);
Run Code Online (Sandbox Code Playgroud)

当我点击时/foo/app/app.js遇到404错误,当我点击/web/app/app.js文件时返回.

如何RequestPath与...一起工作PhysicalFileSystem

Ben*_*lde 10

我测试了这段代码片段,它适用于我的示例项目.

app.UseFileServer(new FileServerOptions()
{
    RequestPath = new PathString("/foo"),
    FileSystem = new PhysicalFileSystem(@".\web"),
});
Run Code Online (Sandbox Code Playgroud)

确保你的web.config中有这个:

<system.webServer>
    ...
    <modules runAllManagedModulesForAllRequests="true"></modules>
    ...
</system.webServer>
Run Code Online (Sandbox Code Playgroud)


LaO*_*aar 0

RequestPath您为请求中使用的静态资源定义虚拟路径,将其视为静态文件的路由。

使用PhysicalFileSystem您定义静态文件查找的路径。

因此,如果有请求将您在RequestPath路径部分中定义的内容转换为硬盘上的目录。

在您的情况下,您应该收到 404 的状态代码web/app.js(因为这是您的目录而不是您的路线)和 200 的状态代码foo/app.js