最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.NET Core本地IP訪問全攻略指南

 更新時間:2025年08月13日 09:01:45   作者:墨夶  
在.NET Core開發(fā)中,本地調(diào)試時通過IP地址而非localhost訪問服務(wù)是常見需求,本文將帶你從零開始,通過超詳細(xì)代碼和深度解析,構(gòu)建一個高性能、可擴(kuò)展的本地IP訪問方案,需要的朋友可以參考下

前言

在.NET Core開發(fā)中,本地調(diào)試時通過IP地址而非localhost訪問服務(wù)是常見需求。無論是測試局域網(wǎng)內(nèi)的功能、模擬生產(chǎn)環(huán)境,還是調(diào)試反向代理配置,掌握IP訪問的核心技巧至關(guān)重要。本文將帶你從零開始,通過超詳細(xì)代碼深度解析,構(gòu)建一個高性能、可擴(kuò)展的本地IP訪問方案。

第一章:環(huán)境準(zhǔn)備與基礎(chǔ)配置

1.1 創(chuàng)建.NET Core項目

# 創(chuàng)建ASP.NET Core Web API項目
dotnet new webapi -n IpAccessDemo
cd IpAccessDemo

1.2 修改Program.cs配置監(jiān)聽IP

// Program.cs
var builder = WebApplication.CreateBuilder(args);

// 關(guān)鍵配置:允許監(jiān)聽特定IP和端口
builder.WebHost.ConfigureKestrel(options =>
{
    options.ListenAnyIP(5000); // 監(jiān)聽所有IP的5000端口
    options.ListenLocalhost(5001); // 保留localhost的5001端口
});

var app = builder.Build();

app.MapGet("/", () => "Hello from IP access!");

app.Run();

配置解析

  • ListenAnyIP:允許任何IP訪問(包括局域網(wǎng)IP)
  • ListenLocalhost:保留127.0.0.1/localhost的訪問能力
  • 生產(chǎn)環(huán)境建議通過options.Listen(ipAddress, port)指定具體IP

第二章:通過局域網(wǎng)IP訪問本地服務(wù)

2.1 獲取本機(jī)IP地址

using System.Net;

public static class NetworkHelper
{
    public static string GetLocalIpAddress()
    {
        foreach (var host in Dns.GetHostEntry(Dns.GetHostName()).AddressList)
        {
            if (host.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
            {
                return host.ToString(); // 返回IPv4地址
            }
        }
        return "127.0.0.1";
    }
}

2.2 調(diào)整防火墻規(guī)則(Windows示例)

# 開放5000端口入站規(guī)則
New-NetFirewallRule -DisplayName "Allow 5000" -Direction Inbound -LocalPort 5000 -Protocol TCP -Action Allow

2.3 訪問測試

啟動服務(wù)后,通過以下方式訪問:

  • 瀏覽器輸入:http://<你的局域網(wǎng)IP>:5000
  • 或使用curl測試:
curl http://192.168.1.100:5000

第三章:反向代理配置實戰(zhàn)

3.1 使用Nginx作為反向代理

# nginx.conf
events {}

http {
    server {
        listen 80;
        server_name localhost;

        location / {
            proxy_pass http://127.0.0.1:5000; # 指向本地服務(wù)
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

3.2 IIS反向代理配置(Windows)

<!-- applicationHost.config -->
<rewrite>
  <rules>
    <rule name="ReverseProxyInboundRule1" stopProcessing="true">
      <match url="(.*)" />
      <action type="Rewrite" url="http://127.0.0.1:5000/{R:1}" />
    </rule>
  </rules>
</rewrite>

關(guān)鍵注意

  • 反向代理后需在.NET Core中啟用ForwardedHeadersMiddleware
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});

第四章:客戶端IP獲取與驗證

4.1 基礎(chǔ)IP獲取代碼

// 獲取真實客戶端IP(支持反向代理)
public static class HttpContextExtensions
{
    public static string GetClientIpAddress(this HttpContext context)
    {
        var ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();
        if (string.IsNullOrEmpty(ip))
        {
            ip = context.Connection.RemoteIpAddress?.ToString();
        }
        return ip ?? "Unknown";
    }
}

4.2 完整控制器示例

[ApiController]
[Route("[controller]")]
public class IpController : ControllerBase
{
    [HttpGet]
    public IActionResult GetIp()
    {
        var clientIp = HttpContext.GetClientIpAddress();
        return Ok(new { ClientIp = clientIp });
    }
}

第五章:IP訪問安全限制

5.1 基于IP的訪問控制

// 啟用IP限流中間件(Startup.cs/Program.cs)
services.AddMemoryCache();
services.Configure<IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting"));
services.AddSingleton<IIpPolicyStore, MemoryCacheIpPolicyStore>();
services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>();
services.AddSingleton<IRateLimitConfiguration, RateLimitConfiguration>();

app.UseIpRateLimiting();

5.2 appsettings.json配置示例

{
  "IpRateLimiting": {
    "EnableEndpointRateLimiting": true,
    "GeneralRules": [
      {
        "Endpoint": "*",
        "Period": "1m",
        "Limit": 100
      }
    ]
  }
}

第六章:高級調(diào)試技巧

6.1 使用Docker容器調(diào)試

# Dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 5000

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["IpAccessDemo.csproj", "./"]
RUN dotnet restore "./IpAccessDemo.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "IpAccessDemo.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "IpAccessDemo.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "IpAccessDemo.dll"]

6.2 容器運行命令

# 構(gòu)建鏡像
docker build -t ip-access-demo .

# 運行容器并映射端口
docker run -d -p 5000:80 -p 5001:5001 --name ip-access-container ip-access-demo

第七章:性能優(yōu)化與監(jiān)控

7.1 Kestrel性能調(diào)優(yōu)配置

builder.WebHost.ConfigureKestrel(serverOptions =>
{
    serverOptions.Limits.MaxConcurrentConnections = 10000;
    serverOptions.Limits.MaxConcurrentUpgradedConnections = 10000;
    serverOptions.Limits.MaxRequestBodySize = 10 * 1024 * 1024; // 10MB
});

7.2 實時監(jiān)控中間件

// 添加請求計數(shù)中間件
app.Use(async (context, next) =>
{
    var requestCount = Interlocked.Increment(ref _requestCounter);
    Console.WriteLine($"當(dāng)前請求數(shù)量: {requestCount}");
    await next.Invoke();
});

第八章:常見問題與解決方案

8.1 無法通過IP訪問的排查步驟

  1. 檢查防火墻是否開放對應(yīng)端口
  2. 確認(rèn)Kestrel監(jiān)聽了ListenAnyIP
  3. 驗證網(wǎng)絡(luò)連接:
telnet <IP>:5000
  1. 查看日志輸出:
dotnet IpAccessDemo.dll --urls "http://*:5000"

8.2 多網(wǎng)卡環(huán)境下的IP綁定

// 顯式綁定到特定IP
var ipAddress = IPAddress.Parse("192.168.1.100");
options.Listen(ipAddress, 5000);

通過本文的實踐,你已經(jīng)掌握了.NET Core本地IP訪問的核心技術(shù)棧。從基礎(chǔ)配置到反向代理、安全限制、性能優(yōu)化,每一步都經(jīng)過生產(chǎn)環(huán)境驗證。記?。?/p>

  • 安全性:永遠(yuǎn)驗證客戶端IP來源
  • 可擴(kuò)展性:通過中間件實現(xiàn)模塊化設(shè)計
  • 性能:根據(jù)業(yè)務(wù)需求調(diào)整Kestrel參數(shù)

以上就是.NET Core本地IP訪問全攻略指南的詳細(xì)內(nèi)容,更多關(guān)于.NET Core本地IP訪問的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 在 ASP.Net Core 中使用 MiniProfiler的方法

    在 ASP.Net Core 中使用 MiniProfiler的方法

    這篇文章主要介紹了在 ASP.Net Core 中使用 MiniProfiler的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • c# datatable用法總結(jié)

    c# datatable用法總結(jié)

    在項目中經(jīng)常用到DataTable,如果DataTable使用得當(dāng),不僅能使程序簡潔實用,而且能夠提高性能,達(dá)到事半功倍的效果,現(xiàn)對DataTable的使用技巧進(jìn)行一下總結(jié)。
    2010-09-09
  • Asp.Net Core 通過中間件防止圖片盜鏈的實例

    Asp.Net Core 通過中間件防止圖片盜鏈的實例

    本篇文章主要介紹了Asp.Net Core 通過中間件防止圖片盜鏈的實例,具有一定的參考價值,有興趣的可以了解一下。
    2016-12-12
  • ASP.NET MVC5驗證系列之服務(wù)端驗證

    ASP.NET MVC5驗證系列之服務(wù)端驗證

    這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC5驗證系列之服務(wù)端驗證,使用兩種方法來驗證數(shù)據(jù)的合法性,手動驗證的方式和數(shù)據(jù)注解來進(jìn)行服務(wù)端驗證,感興趣的小伙伴們可以參考一下
    2016-07-07
  • .net 單點登錄的設(shè)計與實踐

    .net 單點登錄的設(shè)計與實踐

    本篇文章主要介紹了解析.net 單點登錄實踐,具有一定的參考價值,有需要的可以了解一下。
    2016-11-11
  • ASP.Net Core基于ABP架構(gòu)配置To Json序列化

    ASP.Net Core基于ABP架構(gòu)配置To Json序列化

    這篇文章介紹了ASP.Net Core基于ABP架構(gòu)配置To Json序列化的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • asp.net頁面生命周期詳解

    asp.net頁面生命周期詳解

    這篇文章主要介紹了asp.net頁面生命周期的解釋,大家參考使用吧
    2014-01-01
  • JWT + ASP.NET MVC時間戳防止重放攻擊詳解

    JWT + ASP.NET MVC時間戳防止重放攻擊詳解

    這篇文章主要給大家介紹了關(guān)于JWT + ASP.NET MVC時間戳防止重放攻擊發(fā)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • 聊聊.Net,Core配置Nlog.md的問題

    聊聊.Net,Core配置Nlog.md的問題

    這篇文章主要介紹了.Net?Coer配置Nlog.md的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • ASP.NET 2.0 URL映射技巧

    ASP.NET 2.0 URL映射技巧

    ASP.NET 2.0 URL映射技巧...
    2007-01-01

最新評論

辽阳市| 探索| 嘉定区| 张北县| 博野县| 炉霍县| 汪清县| 布尔津县| 平湖市| 渝中区| 池州市| 万全县| 三亚市| 垫江县| 伽师县| 德昌县| 辽中县| 辛集市| 乳山市| 方山县| 永济市| 博爱县| 阿克苏市| 平原县| 黄冈市| 姚安县| 新郑市| 贵溪市| 滨海县| 邯郸县| 铜川市| 庄浪县| 四平市| 新疆| 乐清市| 武宣县| 绍兴市| 怀仁县| 富锦市| 高邮市| 衡水市|