Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.net核心应用程序的强类型配置类中使用System.Uri_C#_Asp.net Core_Uri - Fatal编程技术网

C# 在ASP.net核心应用程序的强类型配置类中使用System.Uri

C# 在ASP.net核心应用程序的强类型配置类中使用System.Uri,c#,asp.net-core,uri,C#,Asp.net Core,Uri,在我们的aspnetcore2.2应用程序中,我们将强类型类用于配置部分, 按照这种模式: public static IServiceCollection AddMyConfigSettings(this IServiceCollection services, IConfiguration configuration) { MyConfigSettings myConfigSettings = new MyConfigSettings(); configuration.Bin

在我们的
aspnetcore2.2
应用程序中,我们将强类型类用于配置部分, 按照这种模式:

public static IServiceCollection AddMyConfigSettings(this IServiceCollection services, IConfiguration configuration)
{
    MyConfigSettings myConfigSettings = new MyConfigSettings();
    configuration.Bind("MyConfig", myConfigSettings);
    services.AddSingleton(myConfigSettings);
    return services;
}
现在,
MyConfigSettings
类如下所示:

public class MyConfigSettings
{
    #pragma warning disable CA1056 // Uri properties should not be strings      
    public string HostUrl { get; set; }
}

有没有一种简单的方法可以使用
System.Uri
而不是
System.String
作为HostUrl的类型,这样我们就不需要抑制Roslyn analyzer警告?

将属性从
String
更改为
Uri

public class MyConfigSettings {        
    public Uri HostUrl { get; set; }
}
其余的就交给包袱了

也可以像这样绑定到对象图

public static IServiceCollection AddMyConfigSettings(this IServiceCollection services, IConfiguration configuration) {
    MyConfigSettings myConfigSettings = configuration.GetSection("MyConfig").Get<MyConfigSettings>();
    services.AddSingleton(myConfigSettings);
    return services;
}
公共静态IServiceCollection AddMyConfigSettings(此IServiceCollection服务,IConfiguration配置){
MyConfigSettings MyConfigSettings=configuration.GetSection(“MyConfig”).Get();
服务。添加单例(myConfigSettings);
返回服务;
}
绑定并返回指定的类型
Get
比使用
Bind
更方便

前面的代码显示了如何在示例中使用
Get
,这允许将绑定实例直接分配给属性


Reference

如果它不能自动工作,请在属性setter中将字符串解析为URI?只需将属性从字符串更改为URI即可。绑定应该处理由
Uri(string)
构造函数创建的restUri实例,该构造函数不同于设置/选项模式中理想的构造函数。至少使用类似于
//servername/C$
的值。感谢您的提示!在提出这个问题时,我考虑的是internet链接,我没有考虑使用URI表示Windows路径的场景。