如何忽略 MVC6 中的路由
How to ignore routes in MVC6
我正在开发一个非常简单的 SPA 风格的应用程序,我不想使用剃刀,所以我只需要它来提供 HTML 文件(来自 wwwroot 文件夹),除了当js 调用我的 API 控制器。在 Web API 2 中,您可以让路由器忽略 HTML 文件,以便直接提供它们,例如
config.Routes.IgnoreRoute("Html", "{whatever}.html/{*pathInfo}");
类似于此示例:http://www.strathweb.com/2014/04/ignoring-routes-asp-net-web-api/ IgnoreRoute 功能是未实现还是已更改?
目前如果我有 app.UseMvc();在我的 Startup.cs 中,任何对“/”的获取请求都会让我得到这个异常:
An unhandled exception occurred while processing the request.
InvalidOperationException: The view 'Index' was not found. The following locations were searched:
/Views/Home/Index.cshtml
/Views/Shared/Index.cshtml.
Microsoft.AspNet.Mvc.Rendering.ViewEngineResult.EnsureSuccessful()
但是当我在没有 MVC 的情况下离开它时,它会在您请求“/”时提供 index.html 文件 - 显然我的 API 控制器将无法工作。
我想如果您想要服务 index.html 即使您的 MVC 选项已启用?如果是这样,您必须更改一项设置。
当您启用 MVC 时,当您的 url 类似于 http://localhost:yourport
时,会添加一个默认路由来搜索 Home/Index。
当您禁用 MVC 时,它将服务 index.html,因为在这种情况下没有路由。
因此,如果您想在启用 MVC 时提供服务 index.html,请在使用 MVC 之前在 Configure 函数中添加以下内容。
app.UseDefaultFiles(new Microsoft.AspNet.StaticFiles.DefaultFilesOptions() { DefaultFileNames = new[] { "index.html" } });
// your UseMVC goes here.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseMvc();
}
我正在开发一个非常简单的 SPA 风格的应用程序,我不想使用剃刀,所以我只需要它来提供 HTML 文件(来自 wwwroot 文件夹),除了当js 调用我的 API 控制器。在 Web API 2 中,您可以让路由器忽略 HTML 文件,以便直接提供它们,例如
config.Routes.IgnoreRoute("Html", "{whatever}.html/{*pathInfo}");
类似于此示例:http://www.strathweb.com/2014/04/ignoring-routes-asp-net-web-api/ IgnoreRoute 功能是未实现还是已更改?
目前如果我有 app.UseMvc();在我的 Startup.cs 中,任何对“/”的获取请求都会让我得到这个异常:
An unhandled exception occurred while processing the request.
InvalidOperationException: The view 'Index' was not found. The following locations were searched:
/Views/Home/Index.cshtml
/Views/Shared/Index.cshtml.
Microsoft.AspNet.Mvc.Rendering.ViewEngineResult.EnsureSuccessful()
但是当我在没有 MVC 的情况下离开它时,它会在您请求“/”时提供 index.html 文件 - 显然我的 API 控制器将无法工作。
我想如果您想要服务 index.html 即使您的 MVC 选项已启用?如果是这样,您必须更改一项设置。
当您启用 MVC 时,当您的 url 类似于 http://localhost:yourport
时,会添加一个默认路由来搜索 Home/Index。
当您禁用 MVC 时,它将服务 index.html,因为在这种情况下没有路由。
因此,如果您想在启用 MVC 时提供服务 index.html,请在使用 MVC 之前在 Configure 函数中添加以下内容。
app.UseDefaultFiles(new Microsoft.AspNet.StaticFiles.DefaultFilesOptions() { DefaultFileNames = new[] { "index.html" } });
// your UseMVC goes here.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseMvc();
}