我想知道如何访问或创建在Visual Studio 2017中创建的.net核心项目中的www根文件夹之外的javascript文件。我已在我的视图所在的文件夹中创建了一个文件,但我无法访问该文件。
答案 0 :(得分:0)
根目录的目的是通过HTTP公开文件。
如果文件没有通过HTTP公开,那么它没有网址。
如果没有网址,浏览器就无法提出请求。
将文件移动到根目录。
答案 1 :(得分:0)
ASP.NET公开了wwwroot文件夹中的所有静态filse。建议您将文件放在99%的位置。但是,如果您的项目确实需要将您的javascript文件放在views文件夹中(我不明白为什么),您可以创建一个中间件。 您的中间件只需要是IApplicationBuilder接口的扩展方法
为此,你可以像这样创建一个静态类
// your middleware (static class so it can have extension methods)
public static class MyStaticFileServer
{
//static method (IApplicationEnvironment so we can easily get the full path of our Project)
public static IApplicationBuilder UseJsFiles(this IApplicationBuilder app, IApplicationEnvironment env)
{
//
var path = Path.Combine(env.ApplicationBasePath, "/Views/Js")
var provider = new PhysicalFileProvider(path);
var options = new StaticFileOptions();
//so our middleware only responds when the url begins with "/Views/js"
options.RequestPath = "/Views/Js";
// file provider so we can serve files
options.FileProvider = provider
//use static file middleware to our middleware to serve files from whatever folder we specify
app.UseStaticFiles(options)
return app;
}
}
现在,您已完成中间件,以便从您选择的文件夹中提供静态文件。现在,我们需要从启动类调用我们的中间件。我们通过在Startup类
中的configure类中调用它来完成此操作//ASP.NET Configure Method in the Startup.cs file
public void Configure(IApplicationEnvironment environment)
{
app.UseJsFiles(environment);
}
答案 2 :(得分:0)
你可以在.net core中实际执行此操作。
我假设你已经启动并运行了静态文件中间件,但是只需要在你的nuget包管理器中运行以下命令:
Install-Package Microsoft.AspNetCore.StaticFiles
在startup.cs中,您将拥有一个Configure方法。它可能看起来与以下内容不太相似:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseStaticFiles();
app.UseMvcWithDefaultRoute();
}
所以UseStaticFiles将从wwwroot提供服务。但实际上,您可以在管道中添加相同中间件的多种用途。请考虑以下事项:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"content", @"js")),
RequestPath = new PathString("/content/js")
});
app.UseMvcWithDefaultRoute();
}
这里我们按照正常情况提供来自wwwroot的静态内容,但我们也想说也应该提供/ Content / Js的文件位置。您可以根据需要添加任意数量的这些内容并提供静态内容。
更多信息