.Net Core WebApi相关配置包含白名单IP和Port配置

官网帮助

Create web APIs with ASP.NET Core | Microsoft Docs

一、命令配置ip端口

命令行输入:

set ASPNETCORE_URLS=http://127.0.0.1:8080 ,修改默认地址,端口。

set ASPNETCORE_URLS=https://localhost:7777;http://localhost:9999

启动时配置

dotnet duckling.consulTest.Service.dll --urls="http://*:5728"

二、代码配置ip端口

相比net core 2.0时候的方式,net core 3.0修改webapi运行时的端口号,要简单很多。

net core 3.0的现在只需要在appsettings.json文件里面,加上"urls":"http://localhost:2001;https://localhost:2002"。发布程序后,直接运行,就可以达到效果。

或者添加一个hostsettings.json里面添加

{
  "urls": "https://localhost:7019;http://localhost:5019"
}

代码添加

builder.Host.ConfigureHostConfiguration(configHost =>
{
    configHost.SetBasePath(Directory.GetCurrentDirectory());
    configHost.AddJsonFile("hostsettings.json", optional: true);//重要,其他行可以不需要
    configHost.AddEnvironmentVariables(prefix: "PREFIX_");
    configHost.AddCommandLine(args);
});

还有这种操作

builder.Host.ConfigureWebHostDefaults(webBuilder =>
{
    webBuilder.UseUrls("http://*:8003"); // 这里默认是http://*:5000 .现在改成8003端口
});

编译通过了,但是运行出现

 

三、代码配置根节点访问

什么叫根节点访问呢?简单的说就是输入ip和端口即可直接跳转到网页,不用加上这里的网址https://ip:port/网址

不同的是网址,配置c.RoutePrefix = string.Empty;网址中就可以没有swagger

 

 四、配置IP白名单

添加builder.Services.AddScoped部分代码

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
builder.Services.AddScoped<ClientIpCheckActionFilter>(container =>
{
    var loggerFactory = container.GetRequiredService<ILoggerFactory>();
    var logger = loggerFactory.CreateLogger<ClientIpCheckActionFilter>();

    return new ClientIpCheckActionFilter("127.0.0.1;192.168.1.5;::1", logger);
});

增加ClientIpCheckActionFilter类

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using System.Net;

namespace WebApiTest
{
    public class ClientIpCheckActionFilter : ActionFilterAttribute
    {
        private readonly ILogger _logger;
        private readonly string _safelist;

        public ClientIpCheckActionFilter(string safelist, ILogger logger)
        {
            _safelist = safelist;
            _logger = logger;
        }

        public override void OnActionExecuting(ActionExecutingContext context)
        {
            var remoteIp = context.HttpContext.Connection.RemoteIpAddress;
            _logger.LogDebug("Remote IpAddress: {RemoteIp}", remoteIp);
            var ip = _safelist.Split(';');
            var badIp = true;

            if (remoteIp.IsIPv4MappedToIPv6)
            {
                remoteIp = remoteIp.MapToIPv4();
            }

            foreach (var address in ip)
            {
                var testIp = IPAddress.Parse(address);

                if (testIp.Equals(remoteIp))
                {
                    badIp = false;
                    break;
                }
            }

            if (badIp)
            {
                _logger.LogWarning("Forbidden Request from IP: {RemoteIp}", remoteIp);
                context.Result = new StatusCodeResult(StatusCodes.Status403Forbidden);
                return;
            }

            base.OnActionExecuting(context);
        }
    }
}

五、Https证书相关

ListenOptions Class (Microsoft.AspNetCore.Server.Kestrel.Core) | Microsoft Docs

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花开花落的个人博客

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值