【发布时间】:2018-05-25 01:51:42
【问题描述】:
我有一个带有该选项的 OWIN 自托管应用程序,并且我一直在通过 appBuilder.UseStaticFiles("/Public/...") 选项将请求传递给静态文件。
但这会将“构建”目录作为根目录。如何将目录指定为绝对路径?
【问题讨论】:
标签: asp.net owin static-files
我有一个带有该选项的 OWIN 自托管应用程序,并且我一直在通过 appBuilder.UseStaticFiles("/Public/...") 选项将请求传递给静态文件。
但这会将“构建”目录作为根目录。如何将目录指定为绝对路径?
【问题讨论】:
标签: asp.net owin static-files
我在这里找到了解决方案:https://richardniemand.wordpress.com/2015/06/18/hosting-web-api-and-static-content-with-owin/
然后根据博文稍作修改,我需要的代码:
PhysicalFileSystem physicalFileSystem = new PhysicalFileSystem(@"C:/www/websiteName");
FileServerOptions options = new FileServerOptions
{
RequestPath = new Microsoft.Owin.PathString("/Public"),
EnableDirectoryBrowsing = true,
EnableDefaultFiles = true,
FileSystem = physicalFileSystem
};
options.StaticFileOptions.FileSystem = physicalFileSystem;
options.StaticFileOptions.ServeUnknownFileTypes = true;
options.DefaultFilesOptions.DefaultFileNames = new[]
{
"index.html"
};
appBuilder.UseFileServer(options);
然后在我的 AJAX 请求中我可以使用 URI /Public/.../something.js
【讨论】:
OP 的回答使我的绝对文件夹路径可用于目录浏览,但文件仍然抛出 404。web.config 中的这些行使一切按预期工作
<system.webServer>
<handlers>
<add name="Owin" verb="" path="*" type="Microsoft.Owin.Host.SystemWeb.OwinHttpHandler, Microsoft.Owin.Host.SystemWeb"/>
</handlers>
</system.webServer>
</configuration>
上面的配置也使我的本地静态文件无法访问。 所以我不得不调用配置方法两次。
app.UseFileServer(options);
app.UseFileServer();
【讨论】: