- สร้างโฟลเดอร์ ifx
- สร้างคลาส ifx/sql.cs
- สร้างคลาส ifx/qry.cs
- แก้ไขไฟล์ App.config
- แก้ไขไฟล์ Program.cs
Monthly Archives: August 2020
Console ใช้ Apache log4net™
- ติดตั้ง log4net ผ่าน NuGet
- บอกโปรแกรมให้โหลดไฟล์ log4net.config
- สร้างไฟล์ log4net.config
- เพิ่มโค๊ดที่ Program.cs
- แก้ไขไฟล์ .gitignore
ส่งอีเมลจาก gmail ด้วย C#
ทำการ อนุญาตแอปที่มีความปลอดภัยน้อย ใน gmail ก่อน
สร้างโปรเจ็กส์แบบ WindowsForm
เพิ่ม button1
using System; using System.Net.Mail; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string displayName = "Phaisarn Sutheebanjard"; string userName = "xxxxx@gmail.com"; string password = "yyyyy"; string mailto = "mr.phaisarn@gmail.com"; using (SmtpClient smtp = new SmtpClient()) { // email MailMessage mail = new MailMessage(); mail.From = new MailAddress(userName, displayName); mail.To.Add(mailto); mail.Subject = "Greeting"; mail.Body = string.Format("Hello World!"); // smtp smtp.DeliveryMethod = SmtpDeliveryMethod.Network; smtp.UseDefaultCredentials = false; smtp.EnableSsl = true; smtp.Host = "smtp.gmail.com"; smtp.Port = 587; smtp.Credentials = new System.Net.NetworkCredential(userName, password); smtp.Send(mail); MessageBox.Show("Mail Sent"); } } } }
Link
การ 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