我在ASP.NET Core项目的appSettings.json中添加了一个CustomSettings部分键:
{
  "ConnectionStrings": {
    "DefaultConnectionString": "Data Source=..."
  },"Logging": {
    "IncludeScopes": false,"LogLevel": {
      "Default": "Warning"
    }
  },"CustomSettings": {
    "Culture": "es-CO"
  }
}

我无法在以下控制器中加载Culture键:

public AccountController(
            UserManager<ApplicationUser> userManager,SignInManager<ApplicationUser> signInManager,IEmailSender emailSender,ILogger<AccountController> logger,IConfiguration configuration)
{
   Response.Cookies.Append(
                    CookieRequestCultureProvider.DefaultCookieName,CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(configuration.GetSection("CustomSettings")["Culture"])),new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
            );
}

无论我是否遵循,总是返回NULL:
configuration.GetSection( “CustomSettings”)[ “文化”];
configuration.GetSection( “CustomSettings”)的GetValue( “文化”).

我尝试了基于ASP.NET Core: Step by Step Guide to Access appsettings.json in web project and class library的帮助,并且我创建了具有字符串Culture属性的CustomSettings类,并在Startup中注入如下:

// Load Custom Configuration from AppSettings.json
        services.Configure<Models.CustomSettings>(Configuration.GetSection("CustomSettings"));

通过注入IOptions来访问customSettings,其值为
customSettings.Value.Culture返回NULL.

第一个问题:¿我做错了什么或缺少什么?

第二个问题:¿为什么在HomeController的索引中执行以下操作会引发异常?

public class HomeController : Controller
{
   public IActionResult Index(IConfiguration configuration)
   {
   }
}

例外:

处理请求时发生未处理的异常.
InvalidOperationException:无法创建类型为’Microsoft.Extensions.Options.IOptions`1 [[OmniMerchant.Models.CustomSettings,OmniMerchant,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]’的实例.模型绑定的复杂类型不能是抽象或值类型,并且必须具有无参数构造函数.

Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ComplexTypeModelBinder.CreateModel(ModelBindingContext bindingContext)

第三个问题:我需要根据appSettings.json上的Culture属性为后台的所有应用程序设置Culture,我读了MSDN documentation,但是我无法实现这一点,¿我怎样才能实现这个目标?

谢谢

解决方法

首先创建与appsetting部分匹配的模态
public class CustomSettings
{
    public string Culture { get; set; }
}

然后在Startup.cs中的ConfigureServices方法中注册它

services.Configure<CustomSettings>(Configuration.GetSection("CustomSettings"));

然后使用需要的IOptions注入它

AccountController(IOptions<CustomSettings> settings)
{
    _settings = settings.Value;
}

c# – appSettings.json中的自定义键在ASP.NET Core 2.0中不起作用的更多相关文章

  1. c# – appSettings.json中的自定义键在ASP.NET Core 2.0中不起作用

    谢谢解决方法首先创建与appsetting部分匹配的模态然后在Startup.cs中的ConfigureServices方法中注册它然后使用需要的IOptions注入它

  2. c#:在一个dotnet类中有一个属性,说明“当前”文化是否真的是默认文化?

    某些课程中是否有某个属性可以告诉我当前的文化是否真的是默认文化.类似于本地化与winforms的工作方式.如果语言是默认的,它会在表单中声明.让我们说如果我在en-US–我怎么能通过代码告诉en.US是否是实际的默认值?我需要为.net不支持的某些XML文件实现一些本地化,因此我想实现自己的…并且做winforms如何工作,即等等财产存在吗?

随机推荐

  1. 如何在.NET Core类库中使用System.Windows.Forms

    我的project.json文件:我所有的net40特定代码都在NET40下定义.有什么想法吗?

  2. 发布到IIS.省略在服务器上安装.NET Core Windows Server Hosting软件包

    ASP.NETCore文档说,其中一个先决条件是目标服务器上的install.NETCoreWindowsServerHostingbundle.是否有可能以某种方式将此依赖项包含在由dotnet-publish创建的自包含包中,并避免现场安装?不.该软件包包含Asp.Net核心模块–以及使用IIS运行Asp.NETCore应用程序所需的本机IIS模块.如果未安装Asp.NET核心模块并且您通过安

  3. CentOS下安装.net core环境并部署WebAPI

    如果提示如下内容就说明启动成功了。

  4. 在CentOS上使用VS Code调试.Net Core应用程序

    VSCode运行后会看到如下图所示的效果。在VSCode界面中,单击最左边的图标按钮中的最后一个图标来安装扩展。主要的扩展包括C#、CodeRunner、C#Extensions和C#FixFormat。如果直接使用Yum安装,安装的是1.8版本的,不符合VSCode所需的版本要求2.1以上的要求,这个只能编译安装了,具体安装步骤可参考《HowtoInstallGit2.15onCentOS/RHEL7/6,Fedora27/26/25》这篇文章。一切准备就绪,现在可将应用程序项目通过SFTP上传到服务器

  5. CentOS 7下发布.net core 2.0 过程

    第5步:在vs中发布工程到本地磁盘发布后的结果如下第6步:验证工程是否可以运行在CMD中切换到发布的目录,执行命令:dotnetASPCore2.dll如果出现如下图所示表明发布成功,可以测试一下localhost:50003.发布到CentOS,并启动服务第1步:用WinSCP拷贝至CentOS系统中的/var/www/qa/中第2步:在CentOS中测试是否可以运行:在Xshell中执行:/opt/core2.0.3/dotnet/var/www/qa/ASPCore2.dll结果没有问题,在Cent

  6. 部署.net core到CentOS系统

    locationNum=10&fps=1

  7. CentOS下使用.Net Core 1.1部署WebApi

    一、安装CentOS系统二、在CentOS上安装最新的.NetCore安装教程在官网已经很详细了。

  8. Ubuntu &amp; GitLab CI &amp; Docker &amp; ASP.NET Core 2.0 自动化发布和部署1

    经过上面四篇博文中的相关安装和配置,我们主要完成了两个容器的创建和运行:gitlab和gitlab-runner:本篇博文目的:使用GitLabCI脚本编译ASP.NETCore2.0程序,然后将编译后的文件传输到服务器上,最后使用SSH连接服务器,并运行程序,完成发布和部署。简单来说,就是我们每次使用gitpush提交完代码,自动完成发布和部署。

  9. 在CentOS上部署Asp.net Core应用程序

    在此之前,我将同样的程序已经成功发布到了Ubuntu,我觉得,既然已经有了前一次的成功经验,不论CentOS还是Ubuntu都是Linux,道理应该差不多吧。但事实证明,还是有些差异的,某些在CentOS上频出的问题在Ubuntu上却没有,所以我的感觉是Ubuntu部署Asp.netCore程序更容易些。Asp.netCore应用需要反向代理配合才能运行,IIS、Apache和Nginx等Web服务软件都可以作为它的反向代理。在Ubuntu下部署与这个差不多,某些命令不一样。

  10. dotnet core 在ubuntu 上运行 F#

    dotnetcore在ubuntu上运行F#线装dotnetcoreubuntusudoapt-getupdatesudoapt-getinstallmono-completefsharpsudoyumupdatesudoyuminstallmono-completefsharp

返回
顶部