c# .netframework WebAPIで呼び出し元をNLogする
APIで呼び出し元を出力する必要があったのでメモしておく。
System.Collectionsは、nugetでインストールする必要があるかもしれない。dynamicはstringでキャストしないとExceptionを吐く。
using System.Collections.Generic; [RoutePrefix("api")] public class ApiTestController : ApiController { private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); private string httpContext = "MS_HttpContext"; ////// ログイン /// ///For Debug [HttpGet] [Route(nameof(Index))] public Dictionary<string, string> Index() { logger.Info("=== Index Controller START"); dynamic ctx = this.Request.Properties[httpContext]; if (ctx != null) { logger.Info("UserHostAddress: {0}", (string)ctx.Request.UserHostAddress); logger.Info("UrlReferrer {0}", (string)ctx.Request.UrlReferrer); Dictionary<string, string> dict = new Dictionary>string, string<() { { "msg", (string)ctx.Request.UserHostAddress }, }; return dict; } return new Dictionary<string, string>() { { "msg", "Hello" }, };
参考
• Obtaining the client IP in ASP.NET Web API self host
• ASP.NET Framework WebAPIでレスポンスをJSON形式に固定する
コメント
コメントを投稿