Ejemplo n.º 1
0
        /// <summary>
        /// 获取http代理启动参数
        /// </summary>
        /// <returns>http代理参数</returns>
        private ProxyOptionGroup GetProxyOption()
        {
            ProxyOptionGroup pGroup = new ProxyOptionGroup();

            pGroup.Options = new List <ProxyOptions>();
            if (SysConfig.MicroServiceOption.Proxy == null)
            {
                SysConfig.MicroServiceOption.Proxy = new List <ProxyOption>();
            }
            pGroup.Options.Add(new ProxyOptions
            {
                Uri      = new Uri($"http://{MicroServiceConfig.ImsHost}"),
                MatchReg = new Regex("/api")
            });
            pGroup.Options.Add(new ProxyOptions
            {
                Uri      = new Uri(SysConfig.MicroServiceOption.Cloud.RegistCenterUri),
                MatchReg = new Regex("/map/scene")
            });
            foreach (var item in SysConfig.MicroServiceOption.Proxy)
            {
                pGroup.Options.Add(new ProxyOptions
                {
                    Uri      = new Uri(item.ProxyPass),
                    MatchReg = new Regex(item.UrlReg),
                    Excludes = item.Excludes == null ? null : item.Excludes.ToList()
                });
            }
            pGroup.Excludes = new List <string> {
                $"/api/{SysConfig.MicroServiceOption.Application.Name}/",
                "/api/Common/ConfigOptions",
                "/api/Common/Excel"
            };
            return(pGroup);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Runs proxy forwarding requests to the server specified by options.
 /// </summary>
 /// <param name="app"></param>
 /// <param name="options">Mutil Proxy options</param>
 public static void RunProxy(this IApplicationBuilder app, ProxyOptionGroup options)
 {
     if (app == null)
     {
         throw new ArgumentNullException(nameof(app));
     }
     if (options == null || options.Options == null || options.Options.Count == 0)
     {
         throw new ArgumentNullException(nameof(options));
     }
     app.UseMiddleware <ProxyMiddleware>(Options.Create(options));
 }
Ejemplo n.º 3
0
 public ProxyMiddleware(RequestDelegate next, IOptions <ProxyOptionGroup> options, ILoggerFactory loggerFactory)
 {
     _next    = next ?? throw new ArgumentNullException(nameof(next));
     _options = options.Value;
     _logger  = loggerFactory.CreateLogger <ProxyMiddleware>();
 }