宝哥软件园

[翻译]ASP NET Core 2.0 URL重定向方法

编辑:宝哥软件园 来源:互联网 时间:2021-09-03

问题

如何在ASP.NET核心2.0中实现URL重定向?

回答

创建一个新的空项目,在Startup.cs文件中,配置RewriteOptions参数并添加URL重定向中间件(UseRewriter):

public void Configure(IApplicationBuilder应用程序,IHostingEnvironment env){ var重写=new重写选项()。添加重定向(“电影”,“电影”)。AddRewrite('演员','明星',true);app。UseRewriter(重写);app。运行(异步(上下文)={ var path=context。请求。路径;var查询=上下文。Request . QueryString等待上下文。响应。WriteAsync($“New URL : { path } { query }”);});}运行,在浏览器地址栏输入:http://localhost:56825/films,通过客户端调试工具观察重定向过程:

在地址栏中输入:http://localhost 336056825/actors,再次观察重定向过程:

讨论

Url重定向是根据用户定义的规则修改请求的URL,目的是解除服务器资源和浏览器URL的绑定。这可能是出于安全原因,搜索引擎优化,用户友好的网站,重定向HTTP到HTTPS和其他目的。

当你无法使用Web服务器(IIS、Apache、Nginx)的重定向功能时,ASP.NET芯提供了一个选项——请求URL重定向中间件。那么它的性能和功能就比不上Web服务器的重定向。

重定向中间件可以做两件事:客户端重定向和服务器重写:

重定向(客户端)

这是一个客户端操作,工作流程如下:

1.客户端请求资源,例如/films

2.服务器返回状态代码301(永久移动)或302(找到),并在响应头中添加位置属性,以指示浏览器请求新地址(如/电影)。

3.客户端请求一个新地址,并将其显示在浏览器的地址栏中。

覆盖(服务器端)

这是一个服务器端操作,具有以下工作流程:

1.客户端请求资源,例如/actors

2.服务器将其内部映射到一个新地址(如/star),并返回200(OK)。

在这个过程中,客户端不知道服务器的内部映射操作,所以用户看到的浏览器地址栏仍然显示初始请求地址。

规则

重定向和重写规则可以是正则表达式。更多详情请参考:https://docs . Microsoft.com/en-GB/aspnet/core/foundations/URL-重写

自定义重定向规则

我们还可以自定义重定向规则,并通过从IRule接口继承的类来实现它:

公共类moviersedirectorrule : IRule { private readonly string[]_ match path;私有只读字符串_ newPathpublic MoviesRedirectRule(字符串[]match path,字符串new path){ _ match path=match path;_ newPath=newPath} public void ApplyRule(RewriteContext context){ var request=context。请求;//它已经是目标地址,所以直接返回if (request.path .以段(new pathstring (_ new path))开头){ return} if(_ match path)。包含(请求。路径.值)){ var newLocation=$ ' { _ newPath } {请求。query string } ';var响应=上下文。响应;回应。StatusCode=StatusCodes。状态302已找到;语境。结果=规则结果。EndResponse回应。标题[标题名称。location]=new location;}}}然后将此自定义规则添加到Configure()中的重写选项中:

public void Configure(IApplicationBuilder应用程序,IHostingEnvironment env){ var重写=new重写选项()。添加(新电影导演规则(匹配路径:新字符串[]{ '/电影','/功能','/专辑' },新路径: '/电影');app。UseRewriter(重写);app。运行(异步(上下文)={ var path=context。请求。路径;var查询=上下文。Request . QueryString等待上下文。响应。WriteAsync($“New URL : { path } { query }”);});}运行,输入:http://localhost:56825/films?Id=123,观察重定向过程:

源代码下载

原文:https://tahirnaushad.com/2017/08/18/URL-rewriting-in-ASP-net-core/

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

更多资讯
游戏推荐
更多+