**编辑:注意:这似乎是在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);
当我点击/foo/app/app.js
时出现404错误,当我点击/web/app/app.js
时会返回该文件。
RequestPath
如何与PhysicalFileSystem
一起使用?
答案 0 :(得分:8)
我测试了这段代码片段,它适用于我this sample project。
app.UseFileServer(new FileServerOptions()
{
RequestPath = new PathString("/foo"),
FileSystem = new PhysicalFileSystem(@".\web"),
});
确保在web.config中有此内容:
<system.webServer>
...
<modules runAllManagedModulesForAllRequests="true"></modules>
...
</system.webServer>
答案 1 :(得分:0)
RequestPath
为请求中使用的静态资源定义虚拟路径,将其视为静态文件的路径。
使用PhysicalFileSystem
定义静态文件查找的路径。
因此,如果对RequestPath
中定义的内容有请求,则路径部分将转换为硬盘上的目录。
在您的情况下,您应该收到web/app.js
的状态代码404(因为这是您的目录而不是您的路线)和foo/app.js
的200。
答案 2 :(得分:0)
我遇到了同样的问题。根据@Rafael here的答案。将以下配置添加到 Web.config ,然后它解决了我的问题:
<system.webServer>
<handlers>
<remove name="StaticFile"/>
<add name="Owin" verb="" path="*" type="Microsoft.Owin.Host.SystemWeb.OwinHttpHandler, Microsoft.Owin.Host.SystemWeb"/>
</handlers>
</system.webServer>
希望这有助于其他人!