.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/ ...
随机推荐
- deepin下用命令管理自己的Github仓库
用命令链接github 初始化 需要用ssh公钥链接到github,注意不能从vim中直接复制 介绍一个命令: xsel < test.txt 将文件中内容直接复制到剪切板中 具体做法 git ...
- 面试代码基础(一)从strstr说起
对于写程序要注意:要能在面试官的提示下把代码写出来(把思想实现的能力)!还要注意边界检查!递归找到出口! 开场来个简单字符串匹配 int strstr(char* target,char* sourc ...
- Maximal Rectangle, 求矩阵中最大矩形,参考上一题
问题描述: Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing only 1 ...
- Kubernetes服务目录的设计
[编者的话]OpenShift 3.6新版本包括新的服务目录和服务中介技术预演版.它们是基于Kubernetes的孵化项目Kubernetes Service Catalog project.服务目录 ...
- web项目整合Shiro框架
1.修改pom.xml文件 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>s ...
- Java之聊天室系统设计一
任务: 先上实现效果图: 登陆界面: index.jsp: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN& ...
- 使用unity2017.3 vuforia7摄像头放大的问题
最近项目需要用到vuforia并且运行环境是Win10,所幸vuforia7刚好出来了,特此记录下开发中遇到的坑 1.从assets store下载示例,运行找不到vuforia命名空间 很多人说的解 ...
- [Java基础] 深入jar包:从jar包中读取资源文件
转载: http://hxraid.iteye.com/blog/483115?page=3#comments 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的 ...
- CodeForces 55D Beautiful numbers (SPOJ JZPEXT 数位DP)
题意 求[X,Y]区间内能被其各位数(除0)均整除的数的个数. CF 55D 有些时候因为问题的一些"整体性"而导致在按位统计的过程中不能顺便计算出某些量,所以只能在枚举到最后一位 ...
- 34-THREE.JS 游泳圈
<!DOCTYPE html> <html> <head> <title>Example 05.08 - Basic 3D geometries - T ...