2017-04-27 3 views
0

Ich würde gerne wissen, wie Sie auf eine Javascript-Datei außerhalb www Stammordner in .net Core-Projekt im Visual Studio 2017 erstellt oder erstellen. Ich habe eine Datei in dem Ordner erstellt, wo meine Ansichten sind aber Ich kann nicht auf die Datei zugreifen.JS Datei außerhalb www Stammordner

+0

Legen Sie es im www-Ordner? – evolutionxbox

Antwort

0

Der Punkt des Stammverzeichnisses besteht darin, Dateien über HTTP verfügbar zu machen.

Wenn die Datei nicht über HTTP verfügbar gemacht wird, hat sie keine URL.

Wenn es keine URL hat, kann der Browser sie nicht anfordern.

Verschieben Sie die Datei in das Stammverzeichnis.

0

ASP.NET macht Ihre gesamte statische Datei aus dem Ordner wwwroot verfügbar. Es ist ratsam, Ihre Dateien 99% der Zeit dorthin zu stellen. Allerdings, wenn Ihr Projekt wirklich erfordert, dass Sie Ihre Javascript-Datei in den Ordner Ansichten (und ich sehe nicht warum), können Sie eine Middleware erstellen. Ihre Middleware hat nur eine Erweiterung Methode für die IApplicationBuilder Schnittstelle

dafür sein, können Sie eine statische Klasse erstellen, wie so

// 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; 
    } 
} 

Jetzt sind Sie mit der Middleware getan statische Dateien von einem dienen Ordner Ihrer Wahl. Nun haben wir unsere Middleware aus der Startup-Klasse aufgerufen. Wir tun dies, indem sie in der configure-Klasse in der Startup-Klasse Aufrufen

//ASP.NET Configure Method in the Startup.cs file 
public void Configure(IApplicationEnvironment environment) 
{ 
    app.UseJsFiles(environment); 
} 
0

du nativ in .net Kern tatsächlich tun können.

Ich gehe davon aus Sie die statische Dateien Middleware und läuft bereits, aber nur für den Fall, die folgenden in Ihrem nuget Paket-Manager laufen:

Install-Package Microsoft.AspNetCore.StaticFiles 

In Ihrem startup.cs, erhalten Sie eine Konfiguration haben Methode. Es sieht wohl nicht allzu unähnlich wie folgt zusammen:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    app.UseStaticFiles(); 
    app.UseMvcWithDefaultRoute(); 
} 

So sind die UseStaticFiles werden die Dinge aus dem wwwroot dienen. Sie können jedoch mehrere Verwendungen derselben Middleware in der Pipeline hinzufügen. So sollten Sie Folgendes beachten:

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(); 
} 

Hier servieren wir Ihnen statische Inhalte aus dem wwwroot wie pro normal, aber wir wollen auch sagen, dass der Speicherort der Datei von/Content/Js als gut bedient werden soll. Sie können beliebig viele hinzufügen und statische Inhalte bereitstellen.

Mehr Infos

Verwandte Themen