asp.net core下获取自身服务器地址
时间: 2023-11-19 10:06:27 浏览: 319
在 ASP.NET Core 中获取自身服务器地址可以使用以下代码:
```csharp
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Extensions;
public string GetServerAddress(HttpContext context)
{
return context.Request.GetEncodedUrl();
}
```
其中,`context` 参数是 `HttpContext` 对象,可以在控制器或中间件中获取。`GetEncodedUrl()` 方法将返回当前请求的完整 URL,包括协议、主机和路径。如果只需要获取主机地址,可以使用以下代码:
```csharp
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Extensions;
public string GetServerAddress(HttpContext context)
{
return context.Request.Host.ToString();
}
```
这将返回当前请求的主机地址(不包括协议和路径)。
相关问题
asp.net core下获取程序所在设备ip
在 ASP.NET Core 中获取程序所在设备 IP 可以使用以下代码:
```csharp
using System.Net;
using System.Net.Sockets;
using Microsoft.AspNetCore.Http;
public string GetLocalIPAddress(HttpContext context)
{
var connection = context.Connection;
if (connection.RemoteIpAddress != null)
{
return connection.RemoteIpAddress.ToString();
}
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, 0))
{
socket.Connect("8.8.8.8", 65530);
var endPoint = socket.LocalEndPoint as IPEndPoint;
return endPoint?.Address.ToString();
}
}
```
其中,`context` 参数是 `HttpContext` 对象,可以在控制器或中间件中获取。这段代码首先尝试从连接对象的 `RemoteIpAddress` 属性中获取客户端的 IP 地址,如果获取不到,则通过创建一个临时的 `Socket` 对象,连接到 Google 的 DNS 服务器,并获取本地 IP 地址。
需要注意的是,在某些情况下(如客户端和服务器在同一台机器上运行), `RemoteIpAddress` 属性可能返回 `null`,这时需要通过其他方式来获取本地 IP 地址。
阅读全文