zoukankan      html  css  js  c++  java
  • asp.net core获取HttpContext相关操作

    建立类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Http;

    namespace Iyibank.Core
    {
    public static class MyHttpContext
    {
    public static IServiceProvider ServiceProvider;

    static MyHttpContext()
    { }


    public static HttpContext Current
    {
    get
    {
    object factory = ServiceProvider.GetService(typeof(Microsoft.AspNetCore.Http.IHttpContextAccessor));

    HttpContext context = ((IHttpContextAccessor)factory).HttpContext;
    return context;
    }
    }
    }
    }

    Startup.cs添加如下

     public void ConfigureServices(IServiceCollection services)内容下添加如下

     services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();

    Configure修改如下

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory,IServiceProvider svp)

    Configure下添加以下内容

       Iyibank.Core.MyHttpContext.ServiceProvider = svp;

    这样在其他地方需要使用时,直接调用即可

    /// <summary>
    /// 获得当前页面客户端的IP
    /// </summary>
    /// <returns>当前页面客户端的IP</returns>
    public static string GetIP()
    {
    //try
    //{
    string result = (MyHttpContext.Current.Request.Headers["HTTP_X_FORWARDED_FOR"].ToString() != null
    && MyHttpContext.Current.Request.Headers["HTTP_X_FORWARDED_FOR"] != String.Empty)
    ? MyHttpContext.Current.Request.Headers["HTTP_X_FORWARDED_FOR"]
    : MyHttpContext.Current.Request.Headers["REMOTE_ADDR"];
    // string result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
    if (string.IsNullOrEmpty(result))
    result = MyHttpContext.Current.Request.Headers["HTTP_X_FORWARDED_FOR"];

    if (string.IsNullOrEmpty(result) || !Utils.IsIP(result))
    return "127.0.0.1";

    return result;
    //}
    //catch
    //{
    // return "127.0.0.1";
    //}
    }

  • 相关阅读:
    BZOJ3197:[SDOI2013]刺客信条——题解
    C 程序与 C++ 程序之间的相互调用
    使用Dev C++调试(debug)程序
    ARM 汇编指令 ADR 与 LDR 使用
    华为交换机以 LACP 模式实现链路聚合
    DLCI 简介
    华为路由器帧中继 FR 实验
    GVRP 的工作机制和工作模式
    华为路由器 HDLC 实验
    华为路由器 IPSec 与 GRE 结合实验
  • 原文地址:https://www.cnblogs.com/zhangkjun/p/6143388.html
Copyright © 2011-2022 走看看