ASP.NET Core MVC index.html未设置为默认页面

时间:2017-01-25 01:54:34

标签: angularjs asp.net-core asp.net-core-mvc asp.net-core-1.0

我使用ASP.NET Core MVC和AngularJS创建了一个项目,其中包含客户端依赖项NPM,Bower,Gulp。 index.html文件夹中创建的wwwroot页面不会显示为默认值。

的index.html

<!DOCTYPE html>
<html ng-app="myQuotesApp">
<head> 
<meta charset="utf-8" />
<title>My Quotes App</title>
<script src="lib/angular/angular.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular-resource.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular-route.js"></script>
<script src="app.js"></script>
</head>
<body ng-cloak>
<div ng-controller="quotesController">
    <h2>List Of Quotes</h2>

    <ul>
        <li ng-repeat="quote in quotes">
            <p>"{{quote.Content}}" - {{quote.Author}}</p>
        </li>
    </ul>
</div>

</body>
</html>

Startup.cs

public class Startup
{
    // This method gets called by the runtime. Use this method to add services to the container.
    // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }
    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole();
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        //app.Run(async (context) =>
        //{
        //    await context.Response.WriteAsync("Hello World!");
        //});
        app.UseMvc();
    }
}

project.json

     {
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    },
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",

    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1"
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "web.config"
    ]
  },

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

app.js文件

 (function () {
     'use strict';
     angular.module('MyQuotesApp', [
         // Angular modules 
         'ngRoute',
 //////////////////
         'ngResource',
 ///////////////insert this ^^^^
         // Custom modules 
         "quotesService"
         // 3rd Party Modules        
    ]);
 })();

quotesService.cs

(function () {
'use strict';

var quotesService = angular.module('quotesService', ['ngResource']);

quotesService.factory('Quotes', ['$resource', function ($resource) {
    return $resource('/api/quotes/', {}, {
        query: { method: 'GET', params: {}, isArray: true }
    });
}]);
})();

quotesController.js

(function () {
    'use strict';

    angular
        .module('myQuotesApp')
        .controller('quotesController', quotesController);

    quotesController.$inject = ['$scope','Quotes']; 

    function quotesController($scope, Quotes) {

        $scope.quotes = Quotes.query();
        //$scope.title = 'quotesController';

        //activate();

        //function activate() { }
    }
})();

QuotesConroller.cs

namespace MyQuotesApp.api
{
[Route("api/[controller]")]
public class QuotesController : Controller
{
    // GET: api/values
    [HttpGet]
    public IEnumerable<Quote> Get()
    {
        return new List<Quote> {
            new Quote {ID=1, Content="abc", Author="abc123" },
            new Quote {ID=2, Content="abcd", Author="abcd123" },
            new Quote { ID=3, Content="abcde", Author="abcde123"}
        };
        //return new string[] { "value1", "value2" };
    }

    // GET api/values/5
    [HttpGet("{id}")]
    public string Get(int id)
    {
        return "value";
    }

    // POST api/values
    [HttpPost]
    public void Post([FromBody]string value)
    {
    }

    // PUT api/values/5
    [HttpPut("{id}")]
    public void Put(int id, [FromBody]string value)
    {
    }

    // DELETE api/values/5
    [HttpDelete("{id}")]
    public void Delete(int id)
    {
    }
}
}

3 个答案:

答案 0 :(得分:0)

当您收到根(/)的GET请求时,您没有指定要执行的操作。

[HttpGet('/')]
public IActionResult Index()
{
    return View();
}

在MVC中,当您指定return View();而未提供特定视图时,它将搜索以Action命名的视图(控制器方法名称,在本例中为Index

答案 1 :(得分:0)

同样的问题 - 根据asp.net核心建议,index.html位于wwwroot文件夹中。那么如何将此页面显示为网站的默认值?我理解(从MVC5天开始)控制器没有提供服务&#34; .html&#34;网页?

答案 2 :(得分:0)

您需要添加app.UseDefaultFiles()app.UseStaticFiles()

app.UsedefaultFiles()会在 wwwrootfolder 中查找默认文件,例如 default.html index.html