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";
    //}
    }

  • 相关阅读:
    NConsoler 介绍
    HOWTO:批量删除存储过程和表
    HOWTO:使ASP.NET网站Forms验证可以指定多个登录页面
    [架构模式实践]如何不让第三方服务/组件的故障阻碍开发和测试进度
    GDI+学习笔记
    脚印: SD2C 2009 参会小记(非技术篇)
    Expression Web使用问题,相关资源及今日阅读
    HOWTO:FirePHP乱码问题解决
    [ECSHOP挖寶]用戶注銷過程
    励志好文
  • 原文地址:https://www.cnblogs.com/zhangkjun/p/6143388.html
Copyright © 2011-2022 走看看