C# 如何在自定义JsonConverter中获取当前IPrincipal?
在我的ASP.NET Web API应用程序中,我正在构建一个自定义的C# 如何在自定义JsonConverter中获取当前IPrincipal?,c#,asp.net,asp.net-web-api,json.net,iprincipal,C#,Asp.net,Asp.net Web Api,Json.net,Iprincipal,在我的ASP.NET Web API应用程序中,我正在构建一个自定义的JsonConverter,以使用登录用户的偏移量将Json对象中的任何DateTime字符串转换为DateTimeOffset 我已经了解到,IPrincipal正在序列化过程中重置 中提供了一个解决方案,我在应用程序中实现了该解决方案 作者没有提到的是如何在JsonConverter的ReadJson()方法中实际检索IPrincipal 所以我现在被困在这里 internal class CustomDateTimeOf
JsonConverter
,以使用登录用户的偏移量将Json对象中的任何DateTime
字符串转换为DateTimeOffset
我已经了解到,IPrincipal
正在序列化过程中重置
中提供了一个解决方案,我在应用程序中实现了该解决方案
作者没有提到的是如何在JsonConverter的ReadJson()
方法中实际检索IPrincipal
所以我现在被困在这里
internal class CustomDateTimeOffsetConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer,
object value,
JsonSerializer serializer)
{
if (value is DateTimeOffset)
{
var date = (DateTimeOffset)value;
value = date.LocalDateTime;
}
serializer.Serialize(writer, value);
}
public override object ReadJson(JsonReader reader,
Type objectType,
object existingValue,
JsonSerializer serializer)
{
if (existingValue is DateTimeOffset)
{
// How to get the current logged in IPrincipal?
// var user = ...
}
}
public override bool CanConvert(Type objectType)
{
return true;
}
}
试试这个
var requestContext = System.Web.DynamicData.DynamicDataRouteHandler.GetRequestContext(System.Web.HttpContext.Current);
var user = requestContext.HttpContext.User;
试试这个
var requestContext = System.Web.DynamicData.DynamicDataRouteHandler.GetRequestContext(System.Web.HttpContext.Current);
var user = requestContext.HttpContext.User;