gpt4 book ai didi

asp.net - 在特定的路由前缀处配置OWIN静态文件服务器

转载 作者:行者123 更新时间:2023-12-04 05:37:52 24 4
gpt4 key购买 nike

我正在尝试将内容保留在非默认位置(例如bower_components/packages/../tools)。作为实验的一部分,我试图建立一个asp.net mvc 5应用程序,在其中打某条路径可以让我浏览undersorejs软件包目录中的文件。

我有以下nuget软件包(除了默认软件包)

Install-Package underscore.js
Install-Package Microsoft.Owin.StaticFiles
Install-Package Microsoft.Owin.Host.SystemWeb

这是我在OWIN启动类(class)中所拥有的
 var fileSystem = new PhysicalFileSystem(
HttpContext.Current.Server.MapPath("~")+"/../packages/underscore.js.1.6.0"
);
var options = new FileServerOptions {EnableDirectoryBrowsing = true, FileSystem = fileSystem};

app.MapWhen(ctx =>
ctx.Request.Uri.AbsolutePath.StartsWith("/__underscore"),
ab => ab.UseFileServer(options)
);

根据我的理解和先前的实验,这非常简单-当请求以 /__underscore use the simple static file server开头时。但是,当我转到 /__underscore时,出现404错误。

但是,放置断点后,我可以看到UseFileServer lambda在启动时执行一次,然后再执行一次,而谓词lambda在每个请求上都会被调用(并返回正确的值)。

我想念什么?

最佳答案

您还需要指定RequestPath:

var options = new FileServerOptions {
EnableDirectoryBrowsing = true,
FileSystem = fileSystem,
RequestPath = PathString.FromUriComponent("/__underscore")
};

根据您的评论:

如果您无法下载文件,请尝试在 OwinHttpHandler中显式注册 Web.Config:
<system.webServer> 
<handlers>
<add name="Owin" verb="" path="*" type="Microsoft.Owin.Host.SystemWeb.OwinHttpHandler, Microsoft.Owin.Host.SystemWeb"/>
</handlers>
</system.webServer>

另外,您可以将 runAllManagedModulesForAllRequests设置为“true”:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="FormsAuthenticationModule" />
</modules>
</system.webServer>

关于asp.net - 在特定的路由前缀处配置OWIN静态文件服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24101432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com