我需要从 web.Config appSettings 访问值

Posted

技术标签:

【中文标题】我需要从 web.Config appSettings 访问值【英文标题】:I need to access value from web.Config appSettings 【发布时间】:2021-03-01 16:19:35 【问题描述】:

我需要从我的 cshtml 文件中访问 web.config appSettings 中的值

这是我在 cshtml 文件中的代码:

<body>
    <div>
        @RenderBody()
        <footer>
            <p  @System.Configuration.ConfigurationManager.AppSettings["myKey"]</p>
        </footer>
    </div>

...
</body>

这是我来自 web.config 的代码

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
   <add key="myKey" value="MyValue"/>
</appSettings>
</configuration>

提前致谢

【问题讨论】:

那么这段代码有什么问题。我在这里看到的唯一错误是您没有正确关闭起始

标记。

我实际上可以从 app.config 访问值,但不能从 web.config 访问。你知道什么可能导致从 web.config 访问它的问题吗? 您使用的是 .NET 核心吗? 没错,我用的是.Net core 在 .NET 核心中,您无法从 web.config 中读取。供参考:***.com/questions/40186445/…***.com/questions/46996480/…docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/… 【参考方案1】:

首先,System.Configuration.ConfigurationManager用在.net framework而不是.net core中。在.net core中,我们通常在appsettings.json中配置。可以参考official link。这里有一个demo:

Startup.cs:

public Startup(IConfiguration configuration)
        
            Configuration = configuration;
        

        public IConfiguration Configuration  get; 

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        
           
            ...
            services.AddSingleton<IConfiguration>(Configuration);
        

appsettings.json:


  "Logging": 
    "LogLevel": 
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    
  ,
  "AllowedHosts": "*",
  "ConnectionStrings": 
    "DefaultConnection": "data source=exmaple;initial catalog=example;persist security info=True;user id=example;password=example"
  ,
  "myKey": "myValue"

测试控制器:

public class TestController : Controller
    
        IConfiguration _iconfiguration;
        public TestController(IConfiguration iconfiguration)
        
            _iconfiguration = iconfiguration;
        
        public IActionResult TestData() 
            ViewBag.Data = _iconfiguration.GetSection("myKey").Value;
            return View();
        
    

TestData.cshtml:

<p> @ViewBag.data</p>

结果:

【讨论】:

以上是关于我需要从 web.Config appSettings 访问值的主要内容,如果未能解决你的问题,请参考以下文章

从 web.config 文件为 http 请求配置身份验证

从 .NET 中的 app.config 或 web.config 读取设置

从 web.config 读取连接字符串

301 从 IIS 6 上的 web.config 重定向

web.config 转换 - 从连接字符串部分删除注释

使用c#从Web.Config文件访问SMTP邮件设置