首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在WebApi请求中获取控制器名称?

如何在WebApi请求中获取控制器名称?
EN

Stack Overflow用户
提问于 2016-08-09 13:07:29
回答 3查看 13.8K关注 0票数 2

我有一个logging.cs类,用于在我的WebApi项目中记录有关传入请求的信息。

类是从我的Application_BeginRequest()方法在我的Global.asax中触发的。我需要在请求中获得控制器名称和授权头。怎么做?

我一直在玩HttpRequest请求对象,但我似乎无法准确地利用它是什么。(尽管Http请求的方法看起来很容易!)

对于授权头,我认为它将像“Request.Headers”授权一样简单;“但是,它现在返回为null。

我的代码如下,任何方向或建议都将不胜感激。-Jason

代码语言:javascript
运行
复制
namespace WCAPI.BLL
{
    public class logging_2
    {
        private static HttpRequest Request
        {
            get { return HttpContext.Current.Request; }
        }

        private static HttpResponse Response
        {
            get { return HttpContext.Current.Response; }
        }

        public static void LogWcapiRequest(BLL.DebugTmr tmr)
        {
            if (tmr.EventType == DebugTmr.EventTypes.Null) { return; }

            try
            {
                Services.AFSILog log = new Services.AFSILog();
                log.Level = Services.LogLevels.Info;
                log.SourceSystem = ANACore.AMTConfig.GetConfigurationValue("ConsoleLogSourceSystem");
                if (Request.Url.IsLoopback) { log.SourceSystem += "_" + System.Environment.MachineName; }
                log.Stamp = DateTime.Now;
                log.Message = tmr.FormatedMsg;
                log.Category = tmr.EventType.ToString();


                List<Services.LogData> dets = new List<Services.LogData>();
                dets.Add(new Services.LogData { DataType = Services.ParameterDataTypes.Int, DataKey = "Duration", DataValue = tmr.ElapsedMs.ToString() });

                //This appears to be easy!! 
                var meth = Request.HttpMethod;
                dets.Add(new Services.LogData { DataType = Services.ParameterDataTypes.Int, DataKey = "Method", DataValue = meth });

                //Now how do I get Authorization Header and Controller name ?


                foreach (BLL.DebugTmr.Waypoint wp in tmr.Waypoints)
                {
                    dets.Add(new Services.LogData
                    {
                        DataType = Services.ParameterDataTypes.Int,
                        DataKey = wp.Name + "Ms",
                        DataValue = wp.ElapsedMs.ToString()
                    });
                }

                log.Parameters = dets.ToArray();
                // This is what actually writes to the log I just need add Authorization header and Controller name to my log object
                SaveLog(log);
            }
            catch (Exception ex)
            {
                Debug.Print("Page log create failed : {0}", ex.Message);
            }
        }
    }
}
EN

Stack Overflow用户

发布于 2020-05-13 11:21:53

如果您需要在controller操作中获取控制器名称,则可以使用

this.ActionContext.ActionDescriptor.ControllerDescriptor.ControllerName

票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38851660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档