版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ITzhongzi/article/details/80924662
mvc服务 和 route服务
- 程序想要 增加 请求的路由服务,则需要 在ConfigureServices 中增加路由服务,如下
services.AddRouting();
并且在 Configure 中配置路由并使用,示例如下:
var trackPackageRouteHandler = new RouteHandler(context =>
{
return context.Response.WriteAsync("33333");
});
var routeBuilder = new RouteBuilder(app, trackPackageRouteHandler);
routeBuilder.MapRoute(
"Track Package Route",
"package/{operation:regex(^(track|create|detonate)$)}/{id:int}");
var routes = routeBuilder.Build();
app.UseRouter(routes);
- 对于mvc服务,当增加一个 mvc服务时,这其中默认包含并开启了 路由服务,也就是说 当使用
services.AddMvc();
时,可以不用services.AddRouting();
依然可以在Configure
中配置并使用路由服务(虽然这是没有必要的)。
示例代码:
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)
{
var trackPackageRouteHandler = new RouteHandler(context =>
{
return context.Response.WriteAsync("33333");
});
var routeBuilder = new RouteBuilder(app, trackPackageRouteHandler);
routeBuilder.MapRoute(
"Track Package Route",
"package/{operation:regex(^(track|create|detonate)$)}/{id:int}");
var routes = routeBuilder.Build();
app.UseRouter(routes);
app.UseMvc();
}
- mvc服务开启并使用时,系统会 自动找到所有 继承了
Controller
的类,并查看他的路由特性,如果该类配置了路由特性的话,程序会自动实例化一个对象,并将相应的路由配置增加到 Route 上。 - 运行结果:我们可以看到访问相应设置的路由,数据成功返回
示例代码
对于以下demo我们访问
/value/test
借口 就会收到 “test”的提示文本
- Startup.cs 文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Hosting.Internal;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Routing;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
namespace Configuration
{
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 https://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)
{
app.UseMvc();
}
}
}
- ValueController.cs文件
using System;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace Configuration.Controllers
{
[Route("[controller]")]
public class ValueController: Controller
{
public ILogger _logger;
public ValueController(ILogger<Book> logger)
{
_logger = logger;
}
[HttpGet("Test")]
public string Test()
{
Console.WriteLine("333333333333333333");
_logger.LogInformation("ddddddddddddd");
return "test";
}
}
public class Book
{
public string name { get; set; }
public string price { get; set; }
}
}
- 运行结果 (我们可以看到访问
Controller
中的借口时,数据成功返回)