最近有个客户要求开发一套短网址网站,小编现在都使用.net core进行网站开发了,以是厘厘思路,想想使用.net core 的中间件应该很容易实现。

1. 构建一个中间件,监测网站的响应状态,代码如下:

using Microsoft.AspNetCore.Builder;

using Microsoft.AspNetCore.Http;

using Microsoft.Extensions.Logging;

using NetCoreTFCMS.Domain.DbModel;

using System.Text.RegularExpressions;

using System.Threading.Tasks;

using TianFeng.FrameworkCore.DapperEx;

namespace NetCoreTFCMS.MiddleWare

{

public static class RequestIPExtensions

{

public static IApplicationBuilder UseWatchNoFound(this IApplicationBuilder builder)

{

return builder.UseMiddleware<WatchNoFoundMiddleWare>();

}

}

public class WatchNoFoundMiddleWare

{

private readonly RequestDelegate _next;

private readonly ILogger logger;

public WatchNoFoundMiddleWare(RequestDelegate next, ILoggerFactory loggerFactory)

{

_next = next;

logger = loggerFactory.CreateLogger<WatchNoFoundMiddleWare>();

}

public async Task Invoke(HttpContext context)

{

await _next.Invoke(context);

var path = context.Request.Path.ToString().Trim();

if (path.LastIndexOf("/") == 0)

{

var salt = path.Replace("/", "");

if (Regex.IsMatch(salt, @"^[a-zA-Z0-9]{6}$"))

{

var db = (IDbService)context.RequestServices.GetService(typeof(IDbService));

var model = await db.GetModelAsync<Link>(new { Salt = salt });

if (model != null)

{

if (!Regex.IsMatch(model.SiteUrl, "(file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp)://", RegexOptions.IgnoreCase))

{

model.SiteUrl = "http://" + model.SiteUrl;

}

context.Response.Redirect(model.SiteUrl, true);

}

else

{

logger.LogInformation(salt + "无匹配网址");

}

}

}

}

}

}

2.在startup.cs中的 Configure(IApplicationBuilder app)中添加引用 该 中间件

app.UseWatchNoFound();

这样该中间件就会响应短网址的六位字符串,如果匹配则重定向至对应的网址。

具体的短网址生成,我想就很简单,这里就不多说了,如果有需要,大家可以咨询我。

平台界面

输入网址

自动生成当前域名的短网址

后台管理

更多精彩文章请关注我们的微信公众号FocusDotCore

.net core 开发短网址平台的思路的更多相关文章

  1. 基于.Net Core开发的物联网平台 IoTSharp V1.5 发布

    很高兴的宣布新版本的发布, 这次更新我们带来了大量新特性, 最值得关注的是, 我们逐步开始支持分布式, 这意味着你可以通过多台服务器共同处理数据, 而不是原来的单机处理, 我们也将遥测数据进行分开存储 ...

  2. php生成短网址的思路与方法

    生成短网址的思路以及使用php生成短网址的实现方法. 生成短网址的思路:如果把短网址还原了,你知道是个什么样子的吗?比如:http://www.jbxue.com/sitejs-17300-1.htm ...

  3. .NET Core开发的iNeuOS物联网平台部署树霉派,从网关到云端整体解决方案。助力2019中国.NET峰会。

    2019 中国.NET 开发者峰会正式启动 目       录 1.      概述... 2 2.      树莓派硬件配置... 2 3.      软件信息... 3 4.      Raspb ...

  4. [视频演示].NET Core开发的iNeuOS物联网平台,实现从设备&PLC、云平台、移动APP数据链路闭环

    目       录 1.      概述... 1 2.      登陆信息... 2 3.      设备驱动... 3 4.      组态建模... 3 5.      手机APP. 5 6.  ...

  5. .NET Core开发的iNeuOS工业互联网平台,发布 iNeuDA 数据分析展示组件,快捷开发图形报表和数据大屏

    目       录 1.      概述... 2 2.      演示信息... 2 3.      简单介绍... 3 4.      产品特点... 4 5.      价值体现... 5 1. ...

  6. .NET Core开发的iNeuOS物联网平台部署树霉派(raspbian),从网关到云端整体解决方案。助力2019中国.NET峰会。

    2019 中国.NET 开发者峰会正式启动 目       录 1.      概述... 2 2.      树莓派硬件配置... 2 3.      软件信息... 3 4.      Raspb ...

  7. .NET Core开发的iNeuOS工业互联平台,升级四大特性:配置数据接口、图元绑定数据、预警配置和自定义菜单

    目       录 1.      概述... 2 2.      演示信息... 2 3.      iNeuView(Web组态)配置数据接口... 2 4.      iNeuView(Web组 ...

  8. .NET Core开发的iNeuOS工业互联平台,iNeuKernel物联网核心组件在Docker容器中部署。

    目       录 1.      概述... 2 2.      演示信息... 2 3.      安装Docker容器... 2 4.      安装dotnet镜像... 3 5.      ...

  9. 短信平台软件开发,短信发送平台销售,短信软件源码,G客短信发送平台

    一:web短信平台组成  需要短信软件平台源码的联系QQ:290615413 vx:290615413  整套短信系统平台还是由B/S(客户端+后台,取消了以前C/S的管理后台) ,C/S发送服务端和 ...

随机推荐

  1. FPGA与数字图像处理技术

    数字图像处理方法的重要性源于两个主要应用领域: 改善图像信息以便解释. 为存储.传输和表示而对图像数据进行处理,以便于机器自动理解. 图像处理(image processing): 用计算机对图像进行 ...

  2. Window2008 R2(64位)使用codesmith连接Sqlite

    ①打开C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config目录,找到machine.config文件新增 <add name=" ...

  3. 关于KVO导读

    入门篇 KVO是什么? Key-value observing is a mechanism that allows objects to be notified of changes to spec ...

  4. 窗口迅速关闭的解决办法/scanf/if/for/break

    break if的格式 if(a>b) { printf("max=%d\n",a); } else printf("max=%d\n",b); scan ...

  5. uva11584

    将课本上所述方法实现即可,代码如下: /* * Author: Bingo * Created Time: 2015/1/25 23:49:49 * File Name: uva11584.cpp * ...

  6. 基于webuploader.js的单图片上传封装

    HTML代码 <div class="manageImgUp">点击图片上传</div> <div class="manageImgUpLc ...

  7. 【八】php三大流程控制总结

    1.顺序控制---不加控制的流程,默认按照顺序来执行你编写的代码 2.分支控制--有选择的来执行代码 单分支 语法:if(条件表达式){语句:} 快速入门 $age=150; if($age>1 ...

  8. LeetCode 560. Subarray Sum Equals K (子数组之和等于K)

    Given an array of integers and an integer k, you need to find the total number of continuous subarra ...

  9. Oracle官方非托管Odac驱动与Oracle官方托管odac驱动

    方便自己,方便他人,记一次连接oracle的经历,使用 [Oracle官方非托管Odac驱动,Oracle.DataAccess.Client]连接数据库的时候程序会报错,找了很久都不知道是什么原因, ...

  10. 简单的一句sql

    表1 Id Name 1 张三 2 李四 3 王五 表二 Id Name1 Name2 1 1 2 2 2 1 3 2 3 4 1 3 我现在要查出结果如下: Id Name1 Name2 1 张三 ...