我正在开发一个非常简单的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时,当您的网址像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.