Einstellung index.html als Standard-Seite im asp.net Kern
Wie bekomme ich asp.net Kern zu dienen index.html Datei aus in meinem wwwroot?
Der Grund, warum ich dies tun wollen ist, weil ich eine Entwicklung einer eckigen 4-app mit angular CLI und er kümmert sich um den gesamten build-Prozess. Ich habe es eingerichtet, zu bauen, in das wwwroot-Verzeichnis meiner asp.net Kern-Projekt, aber asp.net Kern will nicht, es zu dienen.
Zuerst habe ich versucht, die Rückkehr der html-Datei über einen controller. Ich habe versucht, diese route:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}");
});
Und dann in den controller habe ich wieder die html-Datei wie folgt:
public IActionResult Index()
{
var webRoot = _env.WebRootPath;
var path = System.IO.Path.Combine(webRoot, "index.html");
return File(path, "text/html");
}
Dies hat nicht funktioniert. Es kehrte eine 404-Datei nicht gefunden Ausnahme und gab den Pfad, aber der Weg es gab, war der richtige Pfad zu der index.html Datei (ich Schnitt und klebte es in explorer und die Datei geöffnet).
Ich bin auch deklarieren diese im startup:
app.UseStaticFiles();
app.UseDefaultFiles();
Dann habe ich versucht, das entfernen der Standard-route. Jetzt bin ich in der Lage zu bekommen, um die index.html Datei aber nur, wenn ich geben Sie den Dateinamen ein, d.h.:
localhost:58420/index.html
Wenn ich versuche, Zugriff auf den root von der domain ohne "index.html" angegeben ist, bekomme ich einen 404-Fehler.
Was ist der richtige Weg, um die Referenz index.html als Standard-Seite? Ich vermute, dass es von einem controller ist wahrscheinlich besser, denn dann wird es kompatibel mit angular-routing ohne schreibt.
ist dein controller name
HomeController
?Ja, die acton klebte ich oben war, zu feuern und mit der richtigen Datei-Pfad, aber es gibt einen 404-Datei nicht gefunden Ausnahme und gibt den richtigen Pfad in der Ausnahme. Vielleicht einige Sicherheitsproblem er von innen den wwwroot-Ordner?
(I cut and pasted it into explorer and the file opened).
Ja, Pfad ist defienitely richtigeInformationsquelleAutor Guerrilla | 2017-03-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie einfach diese in
startup.cs
:Es ist die Kurzform für:
... und es vermeidet Probleme mit zu haben, die in der richtigen Reihenfolge
Wenn Sie Schwierigkeiten haben, diese Arbeit an einem neuen Projekt, stellen Sie sicher, dass Sie nicht lassen Sie die Standard -
app.Run(async (context) => await context.Response.WriteAsync("Hello World!"));
am Ende IhrerConfigure
Methode. Das wird die Anforderung abfangen können, wenn Sie durchsuchen, um Ihre Website-Wurzel, verhindern, dass Sie gehen, um die Standard-Seite.InformationsquelleAutor Johnny
Ich brauchte, um zu erklären, UseDefaultFiles() vor UseStaticFiles().
InformationsquelleAutor Guerrilla
Installation des NuGet-Paket -Microsoft.AspNetCore.StaticFiles.
Nun, in
Startup.Configure
- Methode hinzufügen:Sollten Sie jetzt Holen-Dateien aus
wwwroot
Verzeichnis (verwenden SieUseWebRoot
wenn Sie möchten, ändern Sie ihn auf etwas anderes).Quelle: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files
InformationsquelleAutor Sachin Joseph
Mischen Sie beide MVC-und Default-Dateien portion (useDefaultFiles).
Kommentieren Sie die folgenden Zeilen aus dem code
und verwenden Sie nur
app.UseDefaultFiles();
. Es wird anfangen zu arbeiten.InformationsquelleAutor satty
Es hat u helfen,
InformationsquelleAutor Evan Bor