1 回答

TA貢獻1803條經驗 獲得超6個贊
您可以將服務IHttpContextAccessor注入到轉換器的構造函數中。
類似于以下內容:
public class MyJsonConverter : JsonConverter
{
private readonly IHttpContextAccessor httpContextAccessor;
public MyJsonConverter(IHttpContextAccessor httpContextAccessor)
{
this.httpContextAccessor = httpContextAccessor;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var context = httpContextAccessor.HttpContext;
//...
}
//...
}
然后,您可以在Startup.cs 中HttpContextAccessor注冊轉換器時傳遞該服務ConfigureServices
var httpContextAccessor = new HttpContextAccessor();
services.AddSingleton<IHttpContextAccessor>(httpContextAccessor);
services.AddJsonOptions(options => {
options.SerializerSettings.Converters.Add(new MyJsonConverter(httpContextAccessor));
});
請注意,您不應嘗試HttpContext在轉換器的構造函數中訪問。在寫入或讀取方法中訪問它,因為這很可能在上下文已經填充的請求期間被調用。
- 1 回答
- 0 關注
- 325 瀏覽
添加回答
舉報