Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何在MVC6中忽略路由_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

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

Asp.net core 如何在MVC6中忽略路由,asp.net-core,asp.net-core-mvc,Asp.net Core,Asp.net Core Mvc,我正在开发一个非常简单的SPA风格的应用程序,我不想使用razor,所以我只需要它来提供HTML文件(来自wwwroot文件夹),js调用我的API控制器时除外。在WebAPI2中,您可以让路由器忽略HTML文件,以便直接为它们提供服务 config.Routes.IgnoreRoute("Html", "{whatever}.html/{*pathInfo}"); 与此示例类似:IgnoreRoute功能是否未实现或已更改 现在如果我有app.UseMvc();在my Startup.cs中

我正在开发一个非常简单的SPA风格的应用程序,我不想使用razor,所以我只需要它来提供HTML文件(来自wwwroot文件夹),js调用我的API控制器时除外。在WebAPI2中,您可以让路由器忽略HTML文件,以便直接为它们提供服务

config.Routes.IgnoreRoute("Html", "{whatever}.html/{*pathInfo}");
与此示例类似:IgnoreRoute功能是否未实现或已更改

现在如果我有app.UseMvc();在my 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控制器无法工作。

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

当您启用MVC时,当您的url类似于
http://localhost:yourport

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

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

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

我不明白你在评论app.UseMvc()时是什么意思。它工作正常,但web api当然不工作?在我的wwwroot文件夹中,我有一个index.html文件,如果我禁用MVC任何请求/提供html文件,如果我在我的应用程序中启用MVC请求/导致此异常:InvalidOperationException:未找到视图“index”。搜索了以下位置:/Views/Home/Index.cshtml/Views/Shared/Index.cshtml。因此,您希望Index.html即使在启用MVC时也可以使用。对吗?按照我的想法,这与您的问题无关,因为如果您在IIS中托管站点并将index.html作为默认页面,那么它将提供服务。刚刚更新了问题,在IIS express和VS2015 CTP5中,它仍然显示相同的错误。请检查我的答案。希望它能解决你的问题。这非常有效!与Web API 2.0中的Interest.IgnoreRoute不可用相比,这是一种非常不同的修复方法。它将在不久的将来上线,因此它将在没有静态文件中间件的情况下工作。当然,使用它并没有什么错,只是记住功能还没有消失,只是还没有实现,顺序是非常重要的。为了使上述方法有效,我使用了此命令<代码>app.UseDefaultFiles();app.UseStaticFiles();app.UseMvc()这在最新版本的MVC 6(2015年9月5日)中对我有效。我需要添加包Microsoft.AspNet.StaticFiles(感谢Resharper!)。这在带有.NET Core RC2的MVC 6中似乎不适用。有一个.NET核心RC2版本吗?这就是我在接受的答案不起作用时所需要的!
public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseDefaultFiles();
    app.UseStaticFiles();
    app.UseMvc();
}