【问题标题】:Exe does not work without application config file没有应用程序配置文件,exe 不起作用
【发布时间】:2015-10-22 10:22:48
【问题描述】:

我有一个非常简单的应用程序,它查询数据库、获取相关数据并将其显示给最终用户。我正在使用EntityFramework 查询我的数据库,我在app.config 文件中有一个连接字符串。一切正常。当我构建项目并使用发布目录中的exe 时,它按预期工作,但是如果我将exe 移动到另一个目录并尝试运行它,我会收到一条错误消息,提示

在应用程序配置文件中找不到名为“MyEntities”的连接字符串

所以我的问题是我是否必须将app.config 文件与我的应用程序 exe 一起提供给使用它的人,或者我错过了什么?

【问题讨论】:

  • 是的,除非您有充分的理由不提供,否则您通常还会提供 app.config。
  • @JustinHarvey 连接字符串中的敏感信息呢?
  • 这就是我所说的一个很好的理由。如果您不想暴露这一点,那么您将不得不加密数据或将信息存储在其他地方。
  • @Downvoter 想知道为什么?

标签: c# wpf entity-framework


【解决方案1】:

当您构建应用程序时,app.config 将复制到与可执行文件 AppName.exe 位于同一目录中的 AppName.exe.config

此文件需要与您的可执行文件一起复制。

通常,您应该从输出文件夹中复制所有文件以及可执行文件。此类文件可能包含运行应用程序所需的引用程序集。

【讨论】:

  • 感谢您的回答,但是密码等连接字符串中的敏感信息呢?您可以右键单击并打开文件并查看其内容吗?
  • @Code,是的,您将能够查看文件内容,包括密码等敏感信息。您可以加密或混淆敏感信息,但如果攻击者可以运行可执行文件,他仍然能够解密它。您可以考虑对数据库连接使用 Windows 身份验证来避免存储密码的需要。
【解决方案2】:

如果您不想公开此信息,则必须加密数据或将信息存储在其他地方。看看这个加密方法。

https://msdn.microsoft.com/en-us/library/89211k9b(VS.80).aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-22
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2014-10-28
    • 2011-05-11
    相关资源
    最近更新 更多