【发布时间】:2019-08-12 11:30:07
【问题描述】:
我正在尝试配置ForwardedHeadersOptions,它是Microsoft.AspNetCore.HttpOverrides 的一部分。我在appsettings.json 中添加了选项
"ForwardedHeadersOptions": {
"ForwardedHeaders": 5,
"ForwardLimit": 1,
"KnownProxies": [
"111.111.111.111"
]
},
前两个属性(ForwardedHeaders 和 ForwardLimit)被正确映射,而 KnownProxies 不是。这是预期的,因为KnownProxies 的类型是IList<IPAddress>。
所以,为了映射这个属性,我创建了类型转换器:
public class IPAddressTypeConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return sourceType == typeof(string) || base.CanConvertFrom(context, sourceType);
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
return base.ConvertFrom(context, culture, value);
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
return destinationType == typeof(IPAddress) || base.CanConvertTo(context, destinationType);
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
if (value != null && value is string)
{
return IPAddress.Parse(value.ToString());
}
return base.ConvertTo(context, culture, value, destinationType);
}
}
然后,我在Startup.cs 中注册了IPAddressTypeConverter,如下所示:
public void ConfigureServices(IServiceCollection services)
{
TypeDescriptor.AddAttributes(typeof(ForwardedHeadersOptions), new TypeConverterAttribute(typeof(IPAddressTypeConverter)));
services.Configure<ForwardedHeadersOptions>(Configuration.GetSection(nameof(ForwardedHeadersOptions)));
}
但是当我启动应用类型转换器方法时,永远不会被调用。 知道这里有什么问题吗?
【问题讨论】:
标签: asp.net-core-2.0 typeconverter