.net core 开发短网址平台的思路
最近有个客户要求开发一套短网址网站,小编现在都使用.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 开发短网址平台的思路的更多相关文章
- 基于.Net Core开发的物联网平台 IoTSharp V1.5 发布
很高兴的宣布新版本的发布, 这次更新我们带来了大量新特性, 最值得关注的是, 我们逐步开始支持分布式, 这意味着你可以通过多台服务器共同处理数据, 而不是原来的单机处理, 我们也将遥测数据进行分开存储 ...
- php生成短网址的思路与方法
生成短网址的思路以及使用php生成短网址的实现方法. 生成短网址的思路:如果把短网址还原了,你知道是个什么样子的吗?比如:http://www.jbxue.com/sitejs-17300-1.htm ...
- .NET Core开发的iNeuOS物联网平台部署树霉派,从网关到云端整体解决方案。助力2019中国.NET峰会。
2019 中国.NET 开发者峰会正式启动 目 录 1. 概述... 2 2. 树莓派硬件配置... 2 3. 软件信息... 3 4. Raspb ...
- [视频演示].NET Core开发的iNeuOS物联网平台,实现从设备&PLC、云平台、移动APP数据链路闭环
目 录 1. 概述... 1 2. 登陆信息... 2 3. 设备驱动... 3 4. 组态建模... 3 5. 手机APP. 5 6. ...
- .NET Core开发的iNeuOS工业互联网平台,发布 iNeuDA 数据分析展示组件,快捷开发图形报表和数据大屏
目 录 1. 概述... 2 2. 演示信息... 2 3. 简单介绍... 3 4. 产品特点... 4 5. 价值体现... 5 1. ...
- .NET Core开发的iNeuOS物联网平台部署树霉派(raspbian),从网关到云端整体解决方案。助力2019中国.NET峰会。
2019 中国.NET 开发者峰会正式启动 目 录 1. 概述... 2 2. 树莓派硬件配置... 2 3. 软件信息... 3 4. Raspb ...
- .NET Core开发的iNeuOS工业互联平台,升级四大特性:配置数据接口、图元绑定数据、预警配置和自定义菜单
目 录 1. 概述... 2 2. 演示信息... 2 3. iNeuView(Web组态)配置数据接口... 2 4. iNeuView(Web组 ...
- .NET Core开发的iNeuOS工业互联平台,iNeuKernel物联网核心组件在Docker容器中部署。
目 录 1. 概述... 2 2. 演示信息... 2 3. 安装Docker容器... 2 4. 安装dotnet镜像... 3 5. ...
- 短信平台软件开发,短信发送平台销售,短信软件源码,G客短信发送平台
一:web短信平台组成 需要短信软件平台源码的联系QQ:290615413 vx:290615413 整套短信系统平台还是由B/S(客户端+后台,取消了以前C/S的管理后台) ,C/S发送服务端和 ...
随机推荐
- Redis密码设置与访问限制(网络安全)
现在用redis缓存热数据越来越常见了,甚至一些配置,开关等等的东西也写到redis里.原因就是redis简单高效.redis里的数据也越来越重要了,例如一些业务的中间数据会暂时存放在redis里,所 ...
- [scrapy]使用Anaconda来搭建scrapy的运行环境。官方推荐方法。
1.官方文档推荐. 2.一般情况下多数人使用框架的时候使用的是,安装pywin32,和openssl来搭建scrapy的运行环境.但是由于,在这样搭建环境中会遇到各种各样的问题,诸如:下载的版本有问题 ...
- MVVM模式下 DataTemplate 中控件的绑定
今天给ListBox中通过DataTemplate生成的Button绑定命令时,一开始Button始终找不到绑定的命令.现找到了正确的绑定方式,特来记录一下. 先上个正确的示例: <ListBo ...
- Iozone
参考地址:iozone使用技巧.iozone和Fio安装测试说明 iozone介绍 iozone(www.iozone.org)是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统 ...
- 栈(存储结构链表)--Java实现
/*用链表实现栈--链栈 * */ public class MyLinkedStack { public MyLinkedList linklist; int items; public MyLin ...
- LeetCode 219. Contains Duplicate II (包含重复项之二)
Given an array of integers and an integer k, find out whether there are two distinct indices i and j ...
- BZOJ-1225-[HNOI2001] 求正整数
Description 对于任意输入的正整数n,请编程求出具有n个不同因子的最小正整数m.例如:n=4,则m=6,因为6有4个不同整数因子1,2,3,6:而且是最小的有4个因子的整数. Input n ...
- DB---数据库中Schema的理解
今天看到了Schema一词,对于它的理解网上也是说法很多,有一种受到认可的程度比较大,暂且先使用一下: " 首先我来做一个比喻,什么是Database,什么是Schema,什么是Table, ...
- php 不写闭合标签
参阅了一些文章,对PHP闭合标签的总结如下: 好处:如果这个是一个被别人包含的程序,没有这个结束符,可以减少很多很多问题,比如说:header, setcookie, session_st ...
- Java常用API
常用Java API 一. java.io.BufferedReader类(用于从文件中读入一段字符:所属套件:java.io) 1. 构造函数BufferedReader(java.io.FileR ...