项目一:配置
public SendHelperOrdersRequest()
{
MachineName = Environment.MachineName;
Platform = "dfg";
}
/// <summary>
/// 获取此本地计算机的NetBIOS名称
/// </summary>
public string MachineName { get; set; }
/// <summary>
///平台
/// </summary>
public string Platform { get; set; }
将此日志放在要发送的项目一中
Logger.Info($"订单信息为:{JsonConvert.SerializeObject(orders)},{Environment.MachineName}");
项目一发送到项目二
项目二配置
接收的项目二
Logger.Info($"订单来源:{GetRemoteIp(this._httpContextAccessor.HttpContext)},订单数量为:{input.Orders.Count}");
和项目(一)一致的参数
/// <summary>
/// 获取此本地计算机的NetBIOS名称
/// </summary>
public string MachineName { get; set; }
/// <summary>
///平台
/// </summary>
public string Platform { get; set; }
如果是线上的项目就得到远程服务器的ip,如果是本地测试得到的就是本地的ip
#region 得到远程ip
private readonly Regex Pv4Regex = new Regex(@"\b([0-9]{1,3}\.){3}[0-9]{1,3}$",
RegexOptions.Compiled | RegexOptions.ExplicitCapture);
/// <summary>
/// 得到远程ip
/// </summary>
/// <param name="httpContext">请求上下文</param>
/// <returns></returns>
internal string GetRemoteIp( HttpContext httpContext)
{
if (httpContext == null)
{
return "0.0.0.0";
}
var ip = httpContext.Request.Headers["REMOTE_ADDR"].FirstOrDefault(); // could be a proxy -- beware
var ipForwarded = httpContext.Request.Headers["X-Forwarded-For"].FirstOrDefault();
if (string.IsNullOrEmpty(ipForwarded)) ipForwarded = httpContext.Connection.RemoteIpAddress.ToString();
ipForwarded = Pv4Regex.Match(ipForwarded).Value;
if (!string.IsNullOrEmpty(ipForwarded))
ip = ipForwarded;
return !string.IsNullOrEmpty(ip) ? ip : "0.0.0.0";
}
#endregion
最重要的配置Startup
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
如图