การ Get Client IP Address บน ASP.NET Core 3

สร้างโปรเจ็กส์ทดสอบแบบ WebApplication แล้วเลือก API ตั้งชื่อ WebApi

ทำการ inject HttpContextAccessor ในไฟล์ Startup.cs

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace WebApi
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
            services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
    }
}

เพิ่ม API Controller ชื่อ ValuesController.cs

ประกาศตัวแปร httpContextAccessor และกำหนดค่าให้ตัวแปรใน Constructor

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;

namespace WebApi.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        private readonly IHttpContextAccessor httpContextAccessor;

        public ValuesController(IHttpContextAccessor httpContextAccessor)
        {
            this.httpContextAccessor = httpContextAccessor;
        }

        // GET: api/<ValuesController>
        [HttpGet]
        public IEnumerable<string> Get()
        {
            string clientIpAddress = this.httpContextAccessor.HttpContext.Connection.RemoteIpAddress.ToString();
            return new string[] { "clientIpAddress ", clientIpAddress };
        }
    }
}

รันโปรแกรมแล้วลองเรียกไปที่ http://localhost:58691/api/values

จะได้

["clientIpAddress ","::1"]

ถ้าจะจัดเก็บค่า IP Address ลง database ก็กำหนด ขนาด field ไว้ที่ 45 characters

Link

Disable register page

ใช้วิธีนี้ได้กับโปรเจ็กส์แบบ webapi (โปรเจ็กส์ razor) แต่ยังใช้ไม่ได้กับ Blazor App ต้องรอถึง 5.0 release

  1. ติดตั้ง dotnet-aspnet-codegenerator
  2. เพิ่มเพจเกจ Web.CodeGeneration.Design ให้กับโปรเจ็กส์
  3. Scaffold Identity
  4. แก้ไขโค๊ด
Continue reading

โปรเจ็กส์ Web Application เรียกใช้ jQuery

1.อ้างถึง jQuery

ไฟล์ Pages|Shared|_Layout.cshtml

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"] - WebApp1</title>
    <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
    <link rel="stylesheet" href="~/css/site.css" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
...

2.ทดลองใช้งาน เมื่อคลิกที่ <P> แล้วจะแสดง alert

ไฟล์ Pages|Index.cshtml

@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}

<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>

    <p>Click on this paragraph.</p>
</div>

<script type="text/javascript">
    $(document).ready(function () {
        $("p").click(function () {
            alert("The paragraph was clicked.");
        });
    });
</script>

Link

สร้างโปรเจ็กส์ Web API ติดต่อ MySQL

  1. สร้างโปรเจ็กส์ด้วย Visual Studio 2019
  2. ไฟล์ต่างๆในโปรเจ็กส์
  3. เพิ่มคลาส Movie
  4. สร้างคอนโทรลเลอร์ MovieController
  5. ติดตั้ง Pomelo.EntityFrameworkCore.MySql
  6. สร้างตารางที่ MySQL
  7. ทดสอบ API
Continue reading

Install .NET Core SDK on Linux Ubuntu 18.04 – x64

Register Microsoft key and feed

Before installing .NET, you’ll need to register the Microsoft key, register the product repository, and install required dependencies. This only needs to be done once per machine.

$ wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
$ sudo dpkg -i packages-microsoft-prod.deb

Install the .NET SDK

Update the products available for installation, then install the .NET SDK.

$ sudo add-apt-repository universe
$ sudo apt-get install apt-transport-https
$ sudo apt-get update
$ sudo apt-get install dotnet-sdk-2.2

ตรวจสอบหลังการติดตั้ง

$ dotnet --version
2.2.402

Link