展开

关键词

Blazor 路由路由模板

过去 ASP.NET Web 窗体和现代 Web 明显区别在于 Web 服务器入口是否存在路由组件。在 Web 窗体,绝大多数 Web 终结点都是物理文件资源,直接通过其页面路径调用。 请注意,路由器类行为这一特定方面可能会在未来发展为一种模型,必须在该模型明确指定路由器要考虑程序集。这样就可以得到所需结点。 在内部,路由器生成路由表并按给定顺序对它们进行排序。 此外,正如在 ASP.NET MVC 中发生那样,解析 URL 时,表路由将从最具体到最不具体进行评估,并且搜索在首次匹配时停止。 在 Blazor URL 模式或路由模板被收集在路由。该表通过查看使用 Route 属性修饰 Blazor 应用程序组件进行填充。每个组件路径都将成为受支持路由模板。 如果当前页面 URL 与引用 URL 匹配,则“活动”CSS 类将自动添加到由 NavLink 组件呈现定位标记。“活动”CSS 类实现仍然是页面开发人员责任。

1.2K21

使用DOT语言和GraphvizOnline来可视化你ASP.NETCore3.0终结点01

使用有向图来可视化ASP.NET Core终结点 ASP.NETCore结点路由系统通过创建端点URL有向图来有效地工作。然后将传入请求与图进行匹配(一次一个段),以确定要执行结点。 例如,以下简单有向图表示ASP.NET Core3.0 RazorPages 默认应用程序模板结点(dotnet new webapp),其中包含三个Razor页面:Index.cshtml, Error.cshtml 在上面的DOT文件,节点被赋予顺序整数名,1, 2, 3等,并使用端点名称进行标记。这是ASP.NET Core用于表示终结点格式。 对于Razor页面路由非常简单,所以图非常明显。 URL段与图中边进行增量匹配,并在图中遍历一条路径,直到整个请求URL匹配为止。 每个节点(由在ASP.NET CoreDfaNode)有几个属性。 在下一篇文章,我将展示如何自动为自己ASP.NET Core应用程序生成端点图。 总结 在这篇文章,我介绍了用于描述图形DOT语言,并展示了如何使用在线编辑从图表创建图像。

35930
  • 广告
    关闭

    腾讯云服务器买赠活动

    腾讯云服务器买赠活动,低至72元1年,买就送,最长续3个月,买2核送4核、买4核送8核

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ASP.NET Core 3.0 新增功能

    使用终结点路由,通常可以在 UseRouting 配置所有路由: app.UseRouting(routes => { routes.MapRazorPages(); routes.MapHub total-requests current-requests failed-requests 终结点路由结点路由得到了增强,该路由使各种框架(例如 MVC)可以与中间件更好地协同工作: 中间件和终结点顺序可以在 过滤器和特性 (attribute) 可以被放置在控制器方法上。 有关更多信息,请参见 ASP.NET Core 路由。 运行状况检查 运行状况检查通过通用主机使用终结点路由。 在 Startup.Configure ,使用终结点 URL 或者相对路径,在终结点构建器上调用 MapHealthChecks: app.UseEndpoints(endpoints => { 在 Windows 服务承载 ASP.NET Core Forwarded 标头中间件改进 在早期版本 ASP.NET Core ,应用在部署到 Azure Linux 或者除 IIS 之外任何反向代理之后

    1.1K30

    ASP.NET路由系统:URL与物理文件分离

    表现为请求地址与目标Controller和Action动态映射URL路由系统并不是专属于ASP.NET MVC,而是直接建立在ASP.NET 。 二、 实例演示:通过URL路由实现请求地址与.aspx页面的映射 接下来我们将创建一个简单ASP.NET Web Forms应用,并采用一个独立于.aspx文件路径URL来访问对应Web页面,而两者之间映射通过 要通过一个独立于物理路径URL来访问该.aspx页面,我们就需要采用URL路由机制来实现两者之间映射。为此我们在添加Global.asax文件编写了如下几行代码。 对象用于指定定义在路由模板相应变量({name}和{id})默认值。 由于所有员工列表和单一员工详细信息均体现在该页面,所以我们需要根据其请求地址来判断应该呈现怎样数据,而这可以通过RouteData属性表示路由数据来实现。

    33680

    ASP.NET MVC路由扩展:路由映射

    ASP.NET路由系统旨在通过注册URL模板与物理文件之间映射进而实现请求地址与文件路径之间分离,但是对于ASP.NET MVC应用来说,请求目标不再是一个具体物理文件,而是定义在某个Controller 类型定义了一系列扩展方法以实现文件路径无关路由映射,这些扩展方法定义在RouteCollectionExtensions类型。 方法并没有一个表示文件路径physicalFile参数。 XML文件被存放在ASP.NET临时目录下,具体路径如下。 ASP.NET MVC路由展:路由映射 ASP.NET MVC路由扩展:链接和URL生成

    386100

    ASP.NET 路由

    在一个不使用路由 ASP.NET 应用程序,对 URL 传入请求通常映射到磁盘上物理文件,如 .aspx 文件。 在 ASP.NET 路由中,您可以定义 URL 模式,该模式包含在处理 URL 请求时使用占位符。在运行时,应用程序名称后面的 URL 部分根据您所定义 URL 模式分析为离散值。 在 URL 重写,如果更改了 URL 模式,则必须手动更新包含原始 URL 所有超链接。 由于 ASP.NET 路由可以从 URL 提取值,所以处理传入请求时不更改 URL。 定义 URL 模式称作“路由”。在路由中,您可以指定占位符,用于映射到从 URL 请求中分析值。您还可以指定用于匹配 URL 请求常量值。 因此你可以在地址栏输入各种Urls来观察它匹配了哪一个路径。在页面底部,显示了你程序中所有被定义route列表。它可以让你看到当前URL匹配哪个你定义route。

    37781

    通过极简模拟框架让你了解ASP.NET Core MVC框架设计与实现:路由整合

    简单起见,我们在这里作了这么一个假设:所有的Controller类型都定义在当前ASP.NET Core应用所在项目(程序集)。 当描述Action所有ActionDescriptor对象被解析出来之后,MVC框架需要将它们转换成表示路由结点RoutEndpoint对象。 构造函数除了注入了用于提供Action描述IActionDescriptorCollectionProvider对象之外,还注入了用于路由模式转换RoutePatternTransformer对象 在如下所示应用承载程序,在完成了针对路由结点以及所需服务注册之后,我们调用了前面定义AddMvcControllers扩展方法注册了模拟MVC框架必要服务。 Action方法BarAsync则采用约定路由,按照约定路由模板定义( “{controller}/{action}” ),我们应该将URL路径设置为 “/foobar/bar” 。

    30630

    Asp.net MVC 之 Contorllers(二)

    页面处理程序方面,ASP.NET 机制正常处理该请求。 接着,URL路由模块尝试匹配所有应用程序定义路由URL。 在 ASP.NET 缓存先检查,如果对于请求没有可用响应,之后就会触发该事件。 应用程序路由 按照设计,ASP.NET MVC 应用程序并没有依赖于物理页面。在 ASP.NET MVC ,用户请求代理资源(acting on resources)。 URL模式和路由 路由URL绝对路径样式匹配字符串,也就是一个没有协议、服务和端口信息URL字符串。路由可能是一个字符串常量,但很可能还包含一些占位符。 属性路由 NuGet ASP.NET MVC 5 包含 AttributeRouting 。属性路由所有有关使用属性直接在控制器Action方法上定义路由

    52560

    ASP.NET Core 6框架揭秘实例演示:错误页面的N种呈现方式

    该程序注册了一个路由模板为“{foo}/{bar}”结点,后者在处理请求时直接抛出异常。 图2 开发者异常页面(基本信息) 开发者异常页面除了显示与抛出异常相关信息,还会以图3所示形式显示与当前请求上下文相关信息,包括当前请求URL携带所有查询字符串、所有请求报头、Cookie内容和路由信息 (终结点路由参数)。 演示程序注册了一个针对根路径(“/”)并且直接抛出异常结点,当我们利用浏览器访问该终结点时,这个定制错误消息会以图4所示形式直接呈现在浏览器上。 应用启动后,针对根路径请求会得到如图6所示错误页面

    6620

    ASP.NET Core3.X 终端中间件转换为端点路由运行

    路由进阶 路由负责将请求 URI 映射到终结点并向这些终结点调度传入请求。 路由在应用定义,并在应用启动时进行配置。 路由可以选择从请求包含 URL 中提取值,然后这些值便可用于处理请求。 通过使用应用路由信息,路由还能生成映射到终结点 URL。 在ASP.NET Core 2.1和更低版本路由是通过实现将IRouter传入URL映射到处理程序接口来处理。 但是从某种意义上说,整个Map分支对应于应用程序“端点”. 在ASP.NET Core 2.2,引入了终结点路由作为MVC控制器路由机制。 实际上,这意味着我们有两个中间件: EndpointRoutingMiddleware 实际路由,即计算将为指定请求URL路径调用哪个端点。 它比以前版本功能强大得多. 在上一个示例,我们提供了一个显示名称(主要用于调试目的),但是我们可以附加其他信息,例如授权策略或CORS策略,其他中间件可以查询这些信息。

    13210

    ASP.NET Core路由中间件: 终结点URL映射

    借助路由系统提供请求URL模式与对应终结点(Endpoint)之间映射关系,我们可以将具有相同URL模式请求分发给应用结点进行处理。 可以将一个ASP.NET Core应用视为一组终结点组合,所谓结点可以理解为能够通过HTTP请求形式访问远程服务。每个终结点通过RequestDelegate对象来处理路由过来请求。 "); } await context.Response.WriteAsync("</body></html>"); } ... } 有了这两个核心参数之后 一个URL可以通过分隔符“/”划分为多个路径分段(Segment),路由模板定义路由参数一般来说会占据某个独立分段(如“weather/{city}/{days}”)。 但也有例外情况,我们既可以在一个单独路径分段定义多个路由参数,也可以让一个路由参数跨越多个连续路径分段。 下面先介绍在一个独立路径分段定义多个路由参数情况。

    27731

    ASP.NET MVC5请求管道和生命周期

    请求处理管道 请求管道是一些用于处理HTTP请求模块组合,在ASP.NET,请求管道有两个核心组件:IHttpModule和IHttpHandler。 路由系统职责是从请求URL获取controller和action名称以及其它请求数据。 UrlRoutingModule根据当前请求URL和RouteTable已注册路由模板进行匹配并返回第一个和当前请求相匹配路有对象Route,然后根据路有对象获取路由数据对象RouteData( ASP.NET MVC路由数据必须包含controller和action名称),再有RouteData获取IRouteHandler最终有IRouteHandler得到IHttpHandler。 在ASP.NET MVC中所有的过滤器最终都会被封装为Filter对象,该对象FilterScope类型属性Scope和int类型属性Order用于决定过滤器执行先后顺序,具体规则如下: Order

    36930

    跨平台开发体验: Windows

    对于ASP.NET Core MVC框架来说,它在处理HTTP请求过程中所需一系列服务同样需要预先注册。对这个概念有了基本了解之后,相信读者朋友们对如下所示代码就容易理解了。 这里所谓结点可以视为应用程序提供针对HTTP请求处理器,这两个终结点通过预先设置规则将具有某些特征请求(比如路径、HTTP方法等)映射到对应结点,进而实现路由功能。 对于一个MVC应用程序来说,我们可以将定义在Controller类型Action方法视为一个终结点,那么路由映射最终体现在HTTP请求与目标Action方法映射上。 如下所示HelloController是我们定义Controller类型。按照约定,所有的Controller类型名称都应该以“Controller”字符作为后缀。 换句话说,满足该路径模式请求URL携带姓名将自动绑定到该Action方法name参数上。

    50730

    如何在 ASP.NET MVC 中集成 AngularJS(1)

    HTML5 History API 是通过脚本来操作浏览器历史记录标准方法,以这点为核心,是实现单页面应用重点。 基本 URL 用于在整个应用程序,解决所有相对 URL 问题。你可以在应用程序设置,如下所示母版页 header 部分基本 URL: <! Visual Studio 运行按钮来直接执行这个页面,MVC 将会执行并尝试去查找一个用于客户路由 MVC 控制器和视图。 你可以在 MVC 路由以一种通配符路由来处理你路由,但我更愿意使用明确路由表,并使得 MVC 拒绝所有无效路由。 下面的代码片段在应用程序启动之后,使用了 $controllerProvider 来使注册方法有效。在下面的例子,提供了一种用于注册和动态加载两个控制器和服务注册方法。

    74760

    ASP.NET Core 错误处理(Handle Errors)

    : 该异常页面展示了如下信息: 异常消息 异常堆栈追踪(Stack) HTTP请求查询参数(Query) Cookies HTTP请求标头(Headers) 路由(Routing),包含了终结点路由信息 该异常处理程序: 可以捕获后续中间件未处理异常 若无异常或HTTP响应已经启动(Response.HasStarted == true),则不做任何处理 不会改变URL路径 默认情况下,会生成类似如下模板 同样,会有一个占位符{0},用于填充Http状态码 向客户端发送Http状态码302-已找到 然后将客户端重定向到指定结点,在该终结点中,可以针对不同错误状态码分别进行处理 app.UseStatusCodePagesWithRedirects 不知道你有没有注意:当我们请求一个不存在路径时,它的确会跳转到404页面,但是,Url也变了,变成了/Home/StatusCodeError? 或Action配置不同异常过滤器 异常过滤器非常适合用于捕获并处理Action异常。

    14920

    asp.net core 系列】2 控制器与路由恩怨情仇

    当然,那是以后事情。这一篇将通过自定义一个控制器来为大家介绍asp.net core mvc 控制器和路由相关知识。 ? 1. 当接到用户或者界面转交请求时,程序从请求路径解析出控制器名称,然后寻找 <控制器>Controller 或者 <控制器> : Controller 类。 路由 在第一节,我们介绍了一下asp.net core mvc如何寻找控制器和Action,那这一节将介绍程序如何从请求链接解析出控制器和Action名称,也就是路由映射。 路由(Routing)负责匹配传入HTTP请求,然后将这些请求发送给应用可执行终结点。终结点是应用可执行请求处理代码单元,也就是我们控制器里方法(Action)。 2.1 路由配置 对于所有asp.net core模板都包括生成在代码路由。通常,我们要求路由在Startup.Configure方法中进行配置。

    30720

    ASP.NET Core路由中间件: 终结点(Endpoint)

    到目前为止,ASP.NET Core提供了两种不同路由解决方案。传统路由系统以IRouter对象为核心,我们姑且将其称为IRouter路由。 本章介绍是最早发布于ASP.NET Core 2.2路由系统,由于它采用基于终结点映射策略,所以我们将其称为终结点路由。终结点路由自然以终结点核心,所以先介绍终结点路由系统表现形式。 如下图所示,除了请求处理器,终结点还提供了一个用来存放元数据容器,路由过程很多行为都可以通过相应元数据来控制。 ? 组成终结点两个核心成员(请求处理器和元数据集合)分别体现为只读属性RequestDelegate和Metadata。除此之外,终结点还有一个显示名称只读属性DisplayName。 ASP.NET Core路由中间件[1]: 终结点URL映射 ASP.NET Core路由中间件[2]: 路由模式 ASP.NET Core路由中间件[3]: 终结点 ASP.NET Core路由中间件

    41310

    Asp.Net MVC2.0 Url 路由入门

    并简单介绍Asp.Net MVC2.0 Url路由技术使用。      Url路由是MVC很重要核心一部分。不过它是单独于MVC项目,而且没有开源。 它作为微软一个独立项目抽取了出来,在Asp.Net MVC只是引用了这个dll。新建一个MVC Web项目,打开Global.asax。 首先讲一下Asp.NetUrl重写技术。 date=2009-1-1&id=201 这才是真正url! 现在开始讲Asp.Net MVC路由机制,首先要有个观念就是:Asp.Net MVCurl地址是表现web程序一个逻辑结构。 新建一个Asp.Net MVC Web项目。然后按F5直接可以运行。页面会自动跳转到http://localhost:端口号/Home/Index页面。玄机还是在Global.asax

    8950

    ASP.NET Core 6框架揭秘实例演示:利用路由开发REST API

    借助路由系统提供请求URL模式与对应终结点之间映射关系,我们可以将具有相同URL模式请求分发给与之匹配结点进行处理。 ) [S2008]将终结点处理定义为任意类型委托(源代码) [S2009]IResult 应用(源代码) [S2001]注册路由结点 我们演示这个ASP.NET应用是一个简易版天气预报站点 服务端利用注册一个终结点来提供某个城市在未来N天之内天气信息,对应城市(采用电话区号表示)和天数直接至于请求URL路径。 但也有例外情况,我们既可以在一个单独路径分段定义多个路由参数,也可以让一个路由参数跨越多个连续路径分段。 图5 一个路由参数跨越多个路径分段 [S2007]主机名绑定 一般来说,在利用某路由结点与待路由请求进行匹配时候只需要考虑请求地址路径部分,并忽略主机(Host)名称和端口号,但是一定要加上针对主机名称

    8320

    ASP.NET Core 实战:构建带有版本控制 API 接口

    容器,而这些容器服务,最终都可以在 Configure 方法中进行使用;而 Configure 方法则用于指定 ASP.NET Core 应用程序将如何响应每一个 HTTP 请求,我们可以在这里将我们自己创建中间件 当 ASP.NET Core 脚手架程序添加完成 Area 后,则会打开一个文件提示我们需要在 MVC 中间件创建适用于 Area 路由定义。 不同于 ASP.NET Area ,当我们在 ASP.NET Core 创建好一个 Area 之后,脚手架生成文件不再有 XXXAreaRegistration(XXX 为 Area 名称) 因为我采用方案是在 Url 中指明 API 版本,所以,我们还需要在 Route 修改我们路由属性以对应 API 版本。这里 v 只是一个默认惯例,你也可以不添加。 虽然我们请求 Url 已经带上了版本信息,但是 API 文档上显示请求地址却是不准确,强迫症,不能忍。这里,需要我们修改生成 Swagger 文档配置代码,将路由版本信息进行替换。

    29830

    扫码关注腾讯云开发者

    领取腾讯云代金券