У меня есть класс logging.cs, который используется в моем проекте WebApi для регистрации информации о входящем запросе.Как получить имя контроллера в запросе WebApi?
Класс запускается из моего метода Application_BeginRequest() в моем Global.asax. Мне нужно получить имя контроллера и заголовок авторизации в запросе. Как сделать ?
Я продолжаю играть с объектом запроса HttpRequest, но я не могу показаться похожим на то, что мне нужно. (Хотя метод запроса Http кажется достаточно простым!)
Для заголовка авторизации я бы подумал, что это будет так же просто, как «Request.Headers [« Авторизация »]; однако это возвращается как null в настоящее время.
Мой код ниже, в любом направлении или совете будет принята с благодарностью.
Джейсон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);
}
}
}
}
Если вы можете использовать 'HttpContext', вы должны взглянуть на этот вопрос http://stackoverflow.com/questions/5302444/can-i-get-the-controller-from-the-httpcontext – smoksnes