detect location from ip address .net core

Code Example - detect location from ip address .net core

                
                        // Install-Package MaxMind.GeoIP2

// controller
public class HomeController : Controller
{
    private readonly IHostingEnvironment _hostingEnvironment;

    public HomeController(IHostingEnvironment hostingEnvironment)
    {
        _hostingEnvironment = hostingEnvironment;
    }

    public IActionResult Index()
    {
        using (var reader = new DatabaseReader(_hostingEnvironment.ContentRootPath + "\\GeoLite2-City.mmdb"))
        {
            // Determine the IP Address of the request
            var ipAddress = HttpContext.Connection.RemoteIpAddress;

            // Get the city from the IP Address
            var city = reader.City(ipAddress);

            return View(city);
        }
    }
}
// razor
@model MaxMind.GeoIP2.Responses.CityResponse
@{
    ViewData["Title"] = "Home Page";
}

<div class="row" style="margin-top: 50px;">
    <div class="col-md-12">
        <p>Hey there, welcome visitor from <strong>@Model.City, @Model.Country!</strong></p>
        <p>Your time zone is <strong>@Model.Location.TimeZone</strong></p>
    </div>
</div>

// startup or now program file
public class Startup
{
    // Some code omitted from this code sample for brevity...

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        if (env.IsDevelopment())
        {
            app.UseForwardedHeaders(new ForwardedHeadersOptions
            {
                ForwardedHeaders = ForwardedHeaders.XForwardedFor,

                // IIS is also tagging a X-Forwarded-For header on, so we need to increase this limit, 
                // otherwise the X-Forwarded-For we are passing along from the browser will be ignored
                ForwardLimit = 2 
            });

            app.UseDeveloperExceptionPage();
            app.UseBrowserLink();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
        }

        app.UseStaticFiles();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    }
}