gpt4 book ai didi

asp.net-core - 如何在 MVC6 中忽略路由

转载 作者:行者123 更新时间:2023-12-02 17:25:28 25 4
gpt4 key购买 nike

我正在开发一个非常简单的 SPA 风格应用程序,我不想使用 razor,所以我只需要它来提供 HTML 文件(来自 wwwroot 文件夹),除非 js 调用我的 API Controller 。在 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 中,任何对“/”的 get 请求都会导致此异常:

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 Controller 将无法工作。

最佳答案

我想即使您启用了 MVC 选项,您是否也想提供 index.html 服务?如果是这样,您必须更改一项设置。

当您启用 MVC 时,当您的 url 类似于 http://localhost:yourport 时,会添加一条默认路由来搜索 Home/Index。

当您禁用 MVC 时,它将提供 index.html,因为在这种情况下不存在路由。

因此,如果您想在启用 MVC 时提供 index.html,请在使用 MVC 之前在配置函数中添加以下内容。

app.UseDefaultFiles(new Microsoft.AspNet.StaticFiles.DefaultFilesOptions() { DefaultFileNames = new[] { "index.html" } });
// your UseMVC goes here.

关于asp.net-core - 如何在 MVC6 中忽略路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28017193/

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