【问题标题】:The connection string is empty in Web ApplicationWeb 应用程序中的连接字符串为空
【发布时间】:2016-06-01 12:03:00
【问题描述】:

我有一个 asp.net mvc web 应用程序来在视图中显示一个表格。

我还有一个数据访问项目(它是一个类库,这个项目的dll会放到上面的MVC项目里面访问数据)。

我的网络应用程序不做数据访问的事情。类库接受它。它包含 app.config 中的连接字符串,实体框架数据上下文也在库中。现在该库在控制台应用程序中运行良好。但它在 Web 应用程序中失败,因为连接字符串为空。

在类库中基本可以得到连接字符串:

 public class EndpointManagement : IEndpointManagement
 {
    public string GetConnectionString(MyDataContext context)
    {
       return ConfigurationManager.AppSettings["connectionString"];
    }
 }

不知道如何在web应用程序中处理它????

【问题讨论】:

    标签: .net asp.net-mvc web-config app-config


    【解决方案1】:

    将连接字符串放在 web.config 中。

    【讨论】:

    • 为什么这被否决了?他用 app.config 编写了一个控制台应用程序。他想在 mvc 应用程序中使用需要配置 appSetting 的库。如果他将 connectionString 放在 web.config 的 appSettings 部分,它将流向库。
    【解决方案2】:

    我经常看到这种情况 - 一个类库需要 <appSetting> 或来自主机应用程序的 web.config 或 app.config 的连接字符串。

    这是有问题的,因为对连接字符串的依赖是“隐藏”在类库中的。有人引用了该库,它失败并出现空引用异常,找到原因的唯一方法是查看该库的源代码。就是这样 - 它需要 <appSettings> 中的值。

    最好避免在我们的类中的任何地方直接依赖 app.config。但如果无法解决,我建议至少抛出一个非常明确的异常——“Class Xyz 需要一个连接字符串……”并指定它在哪里寻找该连接字符串。至少这样消费者不必猜测和阅读额外的源代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多