无法读取数据库名称 Web 项目

Posted

技术标签:

【中文标题】无法读取数据库名称 Web 项目【英文标题】:Can't read database name web project 【发布时间】:2021-12-09 20:40:09 【问题描述】:

试图读取数据库名称,但它在站点中不起作用。使用带有解决方案文件的 asp.net Web 项目。我把它放在 web.config 中。这将根据开发数据库或生产数据库 PRODDB 通过 Web 配置转换文件和脚本进行更改。

    <appSettings>
        <add key="databaseName" value="DEVELDB"/>
        <add key="operatingEnvironment" value="dev"/>
    </appSettings>

在 Global.asax.cs 文件中:

  void Application_Start(object sender, EventArgs e)
        
            // Code that runs on application startup
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
           
            var operatingEnvironment = WebConfigurationManager.AppSettings["operatingEnvironment"].ToString();

            if (operatingEnvironment == "dev")
            
                Application["DBE"] = WebConfigurationManager.AppSettings["databaseName"].ToString();
            
        

在 login.cs 类文件中:

 internal static DatabaseConnection GetDatabaseConnection()
            

                return

                    new DatabaseConnection(
                        new ConnectionProperties
                        
                            User = Shared.User,
                            Application = Shared.Application,
                            DatabaseName = (string)HttpContext.Current.Application["DBE"]
                        );
            

在 Web.Development.config 文件中有:

    <appSettings>
        <add key="databaseName" value="DEVELDB" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
        <add key="operatingEnvironment" value="dev" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
    </appSettings>

但是,每当我在登录后进行调试时,它都会转到下面的代码,这很好(与上面的代码相同)但是说没有指定数据库名称?我将它指定为 DEVELDB 并使用“DBE”来引用它。但是,它不是调试到另一个区域然后到那里,而是直接到那里并杀死它?

...
  
                            User = Shared.User,
                            Application = Shared.Application,
                            DatabaseName = (string)HttpContext.Current.Application["DBE"]
                        );

【问题讨论】:

【参考方案1】:

与数据库的连接位于“webconfig”文件中的“connectionstrings”标签中。如果您需要SqlServer,如下所示

 <configuration>
  <connectionStrings>
    <add name="TwoWayConn" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\TwoWayData.accdb"
      providerName="System.Data.OleDb" />
    <add name="TWOWAYDATASQL" connectionString="Data Source=TBIRD\SQLEXPRESS1;Initial Catalog=TWOWAYDATASQL.MDF;Integrated Security=True"
  providerName="System.Data.SqlClient" />
 </connectionStrings>
....

    </configuration>

我是不是误解了你要做什么?

【讨论】:

嗨@GailV,实际上,我们在这里为 DB 连接做不同的事情,这在 Web 项目中更是一种不同的方式。但是,我决定以原始方式在 Global.asax 文件中引用数据库并将连接数据添加到类中。谢谢!

以上是关于无法读取数据库名称 Web 项目的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:无法读取未定义的属性(读取“名称”)

过滤数据时错误无法读取未定义的属性名称字段名过滤器?

无法读取未定义的属性(读取“名称”):ReactJs

未捕获的类型错误:无法读取未定义的属性“名称”

无法使用我的道具在 React 上读取未定义的属性“名称”

Flutter Web和Firebase身份验证TypeError:无法读取未定义的属性'app'