.net core web 中使用app.UseRouter的几种使用方式
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.UseHangfireServer();
app.UseHangfireDashboard(); //方式一
//app.Run(async (context) =>
//{
// await context.Response.WriteAsync("Hello World!");
//}); //方式二
//var endpoint = new RouteHandler((c) => c.Response.WriteAsync("Hello, I am Routing!"));
//app.UseRouter(endpoint); //方式三
var endpoint = new RouteHandler((c) =>c.Response.WriteAsync($"Hello, I am Routing! your item is {c.GetRouteValue("item")}"));
var resolver = app.ApplicationServices.GetRequiredService<IInlineConstraintResolver>();
var runRoute = new Route(endpoint, "{item=home}", resolver);
app.UseRouter(runRoute); //方式四
var runRoute1 = new Route(endpoint, "{item=home}", resolver);
var otherRoute = new Route(endpoint, "other/{item=other_home}", resolver);
var routeCollection = new RouteCollection();
routeCollection.Add(runRoute1);
routeCollection.Add(otherRoute);
app.UseRouter(routeCollection); //方式五
var routeBuilder = new RouteBuilder(app)
{
DefaultHandler = endpoint,
};
routeBuilder.MapRoute("default", "{item=home}");
routeBuilder.MapRoute("other", "other/{item=other_home}"); app.UseRouter(routeBuilder.Build()); //方式六,改写handler
var myendpoint = new MyRouteHandler();
var myrouteBuilder = new RouteBuilder(app)
{
DefaultHandler = myendpoint,
};
myrouteBuilder.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
app.UseRouter(myrouteBuilder.Build()); }
自定义hanlder
public class MyRouteHandler : IRouter
{
public VirtualPathData GetVirtualPath(VirtualPathContext context)
{
return null;
} public Task RouteAsync(RouteContext context)
{ context.Handler = (c) =>
{
var printStr = $"controller:{c.GetRouteValue("controller")}," +
$"action:{c.GetRouteValue("action")},id:{c.GetRouteValue("id")}";
return c.Response.WriteAsync(printStr);
};
return Microsoft.AspNetCore.Routing.Internal.TaskCache.CompletedTask;
}
}
.net core web 中使用app.UseRouter的几种使用方式的更多相关文章
- Ajax中的get和post两种请求方式的异同
Ajax中我们经常用到get和post请求.那么什么时候用get请求,什么时候用post方式请求呢? 在做回答前我们首先要了解get和post的区别. 1. get是把参数数据队列加到提交表单的A ...
- Android平台中实现对XML的三种解析方式
本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能. 在 ...
- Hibernate中双向多对多的两种配置方式
Hibernate中双向多对多的两种配置方式 1.建立多对多双向关联关系 package cn.happy.entitys; import java.util.HashSet; import java ...
- 在web项目中获取ApplicationContext上下文的3种主要方式及适用情况
最近在做web项目,需要写一些工具方法,涉及到通过Java代码来获取spring中配置的bean,并对该bean进行操作的情形.而最关键的一步就是获取ApplicationContext,过程中纠结和 ...
- C++中的类继承(1) 三种继承方式
继承是使代码可以复用的重要手段,也是面向对象程序设计的核心思想之一.简单的说,继承是指一个对象直接使用另一对象的属性和方法.继承呈现了 面向对象程序设 计的层次结构, 体现了 由简单到复杂的认知过程. ...
- MyBatis中主键回填的两种实现方式
主键回填其实是一个非常常见的需求,特别是在数据添加的过程中,我们经常需要添加完数据之后,需要获取刚刚添加的数据 id,无论是 Jdbc 还是各种各样的数据库框架都对此提供了相关的支持,本文我就来和和大 ...
- ASP.NET Core 集成测试中模拟登录用户的一种姿势
不管哪种用户验证方式,最终都是在验证成功后设置 HttpContext.User ,后续处理环节通过 HttpContext.User 获取用户信息.如果能直接修改 HttpContext.User ...
- IOC容器在web容器中初始化——(一)两种配置方式
参考文章http://blog.csdn.net/liuganggao/article/details/44083817,http://blog.csdn.net/u013185616/article ...
- URL Scheme吊起app实现另外一种登录方式
https://developer.apple.com/library/content/featuredarticles/iPhoneURLScheme_Reference/Introduction/ ...
随机推荐
- 组合优于继承 Composition over inheritance
https://stackoverflow.com/questions/49002/prefer-composition-over-inheritance 解答1 Prefer composition ...
- Kruskal算法初步
2017-09-18 21:53:00 writer:pprp 代码如下: /* @theme: kruskal @writer:pprp @date:2017/8/19 @begin:21:19 @ ...
- identityHashCode与偏向锁
hashCode 我们知道在Java中,一切对象都继承自java.lang.Object类.这个类中有一个可继承的方法叫hashCode().它在Object类中的方法签名是这样的: public n ...
- w3c标准盒模型与IE传统模型的区别
一.盒子模型(box model) 在HTML文档中的每个元素被描绘为矩形盒子.确定其大小,属性——比如颜色.背景.边框,及其位置是渲染引擎的目标. CSS下这些矩形盒子由标准盒模型描述.这个模型描述 ...
- 数据库原理及应用-SQL数据操纵语言(Data Manipulation Language)和嵌入式SQL&存储过程
2018-02-19 18:03:54 一.数据操纵语言(Data Manipulation Language) 数据操纵语言是指插入,删除和更新语言. 二.视图(View) 数据库三级模式,两级映射 ...
- String C++完整实现。
String C++实现 改进: /* 版权信息:狼 文件名称:String.h 文件标识: 摘 要:对于上版本简易的String进行优化跟进. 改进 1.(将小块内存问题与大块分别对待)小内存块每个 ...
- hdu3544找规律
如果x>1&&y>1,可以简化到其中一个为1的情况,这是等价的,当其中一个为1(假设为x),另一个一定能执行y-1次, 这是一个贪心问题,把所有的执行次数加起来比较就能得到 ...
- ubuntu 14.04 如何安装nvidia显卡驱动 [转载]
我的机子装的是64位ubuntu 14.04 LTS系统,显卡是GeForce 405 ,想使用cuda所以需要装NVidia官方驱动,但是总是碰到 nouveau 驱动正在使用的问题.找了好久,网上 ...
- hdu3549
题解: 网络流模板题 多组数据 代码: #include<cstdio> #include<cstring> #include<algorithm> #includ ...
- CF 914
照例看A 然后A了 看B 似乎博弈一下就可以了 然后看C 似乎是DP 然后看了room woc似乎有黑红名 赶紧hack 然后没有人有问题 思考为什么 突然看到房间有15hack... 好吧我做D 然 ...