你的位置:首页 > 软件开发 > ASP.net > 【AspNet Core】Nuget代理网站

【AspNet Core】Nuget代理网站

发布时间:2016-05-30 23:00:03
因为访问Nuget太慢,在Dotnet Core RC2发布前,我就基于Asp.Net做了一个Nuget代理网站这是网站地址:http://nuget.lzzy.net/Nuget源:http://nuget.lzzy.net/api/v2广西电信百兆带宽。这个网站将会缓存所有访 ...

因为访问Nuget太慢,在Dotnet Core RC2发布前,我就基于Asp.Net做了一个Nuget代理网站

这是网站地址:http://nuget.lzzy.net/

Nuget源:http://nuget.lzzy.net/api/v2

广西电信百兆带宽。

这个网站将会缓存所有访问过的API页面与包。

API页面缓存的原理,第一次访问会等待服务器从Nuget上下载页面信息

下载后会替换里面的网址并保存到数据库

第二次访问会从数据库里取出页面兵判断过期时间

如果已过期,先返回页面信息,后台新建线程下载新页面。

这样国内访问的时候就会觉得非常快。

 

升级至AspNet Core

等到RC2发布后,我觉得,是时候研究Dotnet Core平台了

那么就从这个小小的Nuget代理网站开始吧。

在.Net FX下,开发的代理程序是通过IHttpHandler进行代理的

那么到了AspNet Core,就变成了通过中间件进行代理。

路由在AspNetCore下也变得不同了,使用起来比老版的更方便更简单。

 

路由的使用

注:路由的使用需要用到包Microsoft.AspNetCore.Routing

首先创建一个静态类,添加一个UseXXXMiddleware扩展方法,这是AspNetCore使用中间件的约定,当然你也可以起其它名字。

在方法里,我们需要new一个RouteBuilder实例。

在实例里调用各种映射方法。

然后调用RouteBuilder的Build方法,这将生成一个路由。

最后再使用路由中间件的扩展方法UseRouter,把刚刚Build出来的路由作为参数传递进去即可。

    public static IApplicationBuilder UseNugetProxyMiddleware(this IApplicationBuilder builder, IConfigurationRoot config)    {      if (!Directory.Exists("Packages"))        Directory.CreateDirectory("Packages");            var cacheSection = config.GetSection("Cache");      _CacheMetadata = int.Parse(cacheSection.GetSection("Metadata").Value);      _CacheList = int.Parse(cacheSection.GetSection("List").Value);      _CacheDetail = int.Parse(cacheSection.GetSection("Detail").Value);      _CacheDefault = int.Parse(cacheSection.GetSection("Default").Value);      var proxySection = config.GetSection("Proxy");      _Source = proxySection.GetSection("Source").Value;      _Replace = proxySection.GetSection("Replace").Value;      _Path = proxySection.GetSection("Path").Value;      var routeBuilder = new RouteBuilder(builder);      routeBuilder.MapGet(_Path + "/{action}", PageHandler);      routeBuilder.MapGet(_Path, PageHandler);      routeBuilder.MapGet(_Path + "/package/{id}/{version}", PackageHandler);      _Path = "/" + _Path;      var router = routeBuilder.Build();      return builder.UseRouter(router);    }    private static async Task PageHandler(HttpContext httpContext)    {    }

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:【AspNet Core】Nuget代理网站

关键词:ASP

ASP
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。