【问题标题】:HTTP error 500.19 - Cannot read configuration fileHTTP 错误 500.19 - 无法读取配置文件
【发布时间】:2014-05-21 15:20:59
【问题描述】:

在我的一个 ASP.NET 应用程序中,由于下面显示的错误,我突然无法在 Visual Studio 2013 中运行它。它似乎试图从一个甚至不存在的路径打开 web.config。我所有的项目代码,包括 web.config,都位于 C:\Projects\SourceCode\AFEManager\Trunk\AFEManager.Web 下。我在这里找到了许多遇到类似错误的用户的帖子,但解决方案似乎有所不同,到目前为止我发现的没有一个似乎适用于我的情况。我查看了那个 TraceLogFiles 目录,最近的日志文件有五天了,所以自从我遇到这个问题以来,它显然没有记录任何东西。任何建议表示赞赏。

【问题讨论】:

  • 同样的错误,你修复了吗?
  • 我想我昨天下午刚刚找到了解决方案。我会尽快更新帖子。不幸的是,似乎在多种情况下都会出现同样的错误,因此我的解决方案很可能对您不起作用。

标签: c# asp.net web-config visual-studio-2013 iis-express


【解决方案1】:

就我而言,我之前删除了 D:\My Documents\My Web Sites\ 中的所有文件夹 然后我发现了错误 我的解决方案文件夹中有一个文件 .vs\config\applicationhost.config 它包含对已删除文件夹的引用。因此,我删除了 applicationhost.config,然后在我的项目属性网页中按下了“创建虚拟目录”按钮。它重新创建了文件和文件夹

【讨论】:

  • 删除 applicationhost.config 并创建新的虚拟目录有效
  • 为我工作:删除了解决方案目录中的 .vs/ 文件夹。
  • 谢谢!我被要求重新访问我去年制作的应用程序,我遇到了这个问题。我已将应用程序移动到另一个文件夹以提交源代码管理,它抱怨在不再存在的文件夹中找不到 web.config(我什至没有,而是我有一个 appsettings.json)。你为我节省了很多时间!
【解决方案2】:

尽管我不能说我完全了解所有细节,但我已经能够解决这个问题。我会尽量描述我最了解的情况,希望其他有更深入了解的人可以进一步澄清。

在我的工作站上完成了我的所有开发之后,有人建议我开始在为我设置的新 VM 环境中进行这项工作。所以我在那里安装了 VS 2013 并从那里的各种项目中复制了我的源代码。但是,这次我决定使用在 VS 安装期间设置的目录 c:\users[MyUser]\My Documents,而不是遵循我之前的本地路径约定 C:\Projects\SourceCode[ProjectName]... \Visual Studio 2013\Projects[项目名称]。不久之后,我们的基础架构团队进行了更改,以便我的主目录 c:\users\rmayer 现在指向一个公共网络驱动器 \totalsafety\TSUsers\rmayer。一切都继续工作,没有任何问题。

但是,由于我在此 VM 环境中工作时遇到的各种困难,我决定返回到使用源代码的原始本地路径在我的工作站上进行开发工作。每当我尝试通过 VS 运行我的代码时,我就开始遇到上述错误。我开始了解到的是 IIS Express 使用的 applicationhost.config 文件位于此处:\totalsafety\TSUsers\rmayer\My Documents\IISExpress\config。它包含我的每个 Web 项目的条目;与此问题相关的部分有一个如下所示的部分:

        <site name="AFEManager.Web-Site" id="8">
            <application path="/" applicationPool="Clr4IntegratedAppPool">
                <virtualDirectory path="/" physicalPath="C:\Users\rmayer\Documents\My Web Sites\AFEManager.Web-Site" />
            </application>
            <application path="/AFEManager" applicationPool="Clr4IntegratedAppPool">
                <virtualDirectory path="/" physicalPath="C:\Projects\SourceCode\AFEManager\Trunk\AFEManager.Web" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="*:19257:localhost" />
            </bindings>
        </site>

当时在 applicationPool="Clr4IntegratedAppPool" 下列出的物理路径属性是根据我在 VM 环境中工作时使用的本地路径设置的。现在,由于用户主目录的移动,无论我是在本地工作还是在 VM 内工作,都会共享这个文件,当我在工作站工作时,此路径无效。通过将此路径更新为 C:\Projects\SourceCode\AFEManager\Trunk\AFEManager.Web,它现在可以在我的工作站上正常工作。

再一次,我对这应该如何工作的理解有限,但它告诉我的是,除非本地路径是它们之间是一致的。如果我是正确的,这似乎是一个不太理想的设计。

【讨论】:

  • 这是一个很好的提示。我们克隆了一台机器,然后重命名了物理文件夹以匹配环境。忘记更新下面的虚拟应用程序的路径。
【解决方案3】:

我将项目文件夹移动到新机器时遇到了这个问题。问题是 VS 在 .vs/ 文件夹内的配置文件 (applicationhost.config) 中注册了站点,但没有在 %USERPROFILE%\My Documents\My Web Sites\ 内创建文件夹。如果您只是在项目属性(Web 选项卡)中单击创建虚拟目录,这还不够。

  1. 首先关闭 VS 并删除解决方案目录中的 .vs/ 文件夹
  2. 重新打开 VS 并在项目属性(Web 选项卡)中单击创建虚拟目录 - VS 将再次注册站点并在 %USERPROFILE%\My Documents\My Web Sites\ 中创建相应的文件夹

【讨论】:

  • 谢谢,删除 .vs 文件夹解决了我的问题
【解决方案4】:

我更改了解决方案文件夹内 vs\config\applicationhost.config 中的虚拟目录路径。

【讨论】:

  • 欢迎来到 Stack Overflow!请不要添加“谢谢”作为答案。在网站上投入一些时间,您将获得足够的privileges 来支持您喜欢的答案,这是 Stack Overflow 表达谢谢的方式。如果您是问题的作者,您还可以将答案标记为已接受。
【解决方案5】:

就我而言,该项目位于网络上,而不是我的本地磁盘上。将项目复制到本地后,问题得到解决。希望它可以节省有同样问题的人的时间。

【讨论】:

    【解决方案6】:

    您可以在 applicationhost.config 文件中将 web.config 的路径更改为其真实路径。该文件位于 /.vs/config 文件夹中。

    更改此文件中的路径后,保存并重新启动项目,它解决了我的问题。

    发生这种情况是因为我有不同的工作站,但项目保存在不同的文件夹中。

    【讨论】:

      【解决方案7】:

      删除 Visual Studio 创建的 .VS 文件夹。 它可能隐藏在您的项目结构中。 取消隐藏文件夹并查找 .vs 文件夹并删除该文件夹并重建应用程序。

      【讨论】:

      • 唯一对我有用的解决方案。而且很简单。
      【解决方案8】:

      解决此问题的最简单方法。

      出现此错误的大致原因是从另一台电脑复制项目。

      解决方案:

      • 步骤 01:在 Visual Studio 解决方案资源管理器中,右键单击您的项目并选择在文件资源管理器中打开文件夹。
      • 步骤 02:打开 .vs 文件夹(隐藏文件夹)并 您将获得 2 个名为 config 的文件夹,另一个名为 your_project_name/config.
      • 步骤 03:两个配置文件夹都将包含一个 名为 applicationhost 的文件。
      • 步骤04:使用记事本打开两个applicationhost文件,找到错误屏幕中显示的目录(配置 文件 \?\C:\User\hp\Documents\My Web Sites\YourProjectName\web.config)
      • 步骤 05:只需替换这个 目录根据你的电脑目录。例如,在我的电脑中,我有 修改如下:

      C:\Users\Sydur Ra​​hman\Documents\My Web Sites\MyProjectName-Site 至 C:\Users\hp\Documents\My Web Sites\MyProjectName-Site

      注意:请确保您在两个应用程序主机文件中都进行了更改。

      就是这样。现在您的项目将按预期运行!

      【讨论】:

        【解决方案9】:

        谢谢你PongGod!我无法评论您的答案,但我还是想发布,因为我在运行Orchard 的实例时遇到了完全相同的问题。就我而言,一切都运行良好,直到我发现一堆旧项目文件位于:

        %USERPROFILE%\My Documents\My Web Sites\
        

        并开始无缘无故地删除它们。然后我尝试在调试模式下从 Visual Studio 启动 Orchard 并收到上面的错误消息。对我的 applicationhost.config 文件应用相同的修复后,现在一切正常。

        就我而言,我假设目录混淆了,因为我最初从 Visual Studio 和 Web Matrix 运行了默认的 Orchard 文件。后来,我下载了完整的源文件并开始从一个完全不同的目录运行这些文件。再次感谢。

        【讨论】:

        • 很高兴我的经验对您有所帮助!
        【解决方案10】:

        这是我找到的解决方案。

        https://gyorgybalassy.wordpress.com/2015/03/06/i-asked-for-a-vs-folder-and-the-vs-team-gave-it-to-me/

        (1)在 |YourSolution|\.vs\config

        中找到 applicationhost.config 文件

        (2)将 VirtualDirectory PhysicalPath 修改为您的项目。

        (3)重启解决方案。启动项目。

        (4)如果仍然无法正常工作,请尝试检查 IISExpress 配置中的设置。如果没有站点设置,请将设置复制并粘贴到 |UserOnYourComputer|\Documents\IISExpress\config\applicationhost.config

        (5)将id更改为IISExpress applicationhost.config中未使用的其他id。

        (6)开始你的项目。

        【讨论】:

          【解决方案11】:

          我遇到了同样的问题,我很简单地解决了它。当我在 git 存储库中执行合并操作后,我的问题出现了,在合并操作 Visual Studio 之后,我如何将我的默认项目 URL 更改为我的合作伙伴计算机的默认 URL,从他上次推送到我的存储库的位置。 所以这是我解决这个错误的方法:

          1. 只需转到项目的属性。
          2. 从左侧垂直对齐的菜单中,选择 Web。
          3. 在您将 Project url 和一个包含默认端口号的文本框之后,现在在该文本框旁边有一个“创建虚拟目录”按钮。
          4. 按下那个按钮就可以了。 它将再次将默认 url 指向项目的当前工作文件夹。

          希望对大家有用:)

          【讨论】:

            【解决方案12】:

            在所有这些答案之后,我找到了我的解决方案。删除 IIS 中的网站并重新创建。为什么?因为我在安装框架 4.5 和 URL Rewrite 之前已经创建了网站。

            【讨论】:

              【解决方案13】:

              进入项目目录:

              ..\\{ProjectDir}\\.vs\\{ProjectName}\\config
              

              然后删除applicationhost.config 文件并重新编译您的解决方案。

              就是这样。

              【讨论】:

                【解决方案14】:

                这些步骤帮助我克服了这个错误
                1.在 Windows 资源管理器中,找到与网站关联的 web.config 文件。

                2.右键单击web.config文件

                3.点击属性。

                4.单击“安全”选项卡,然后单击“编辑”。

                5.点击添加。

                6.在“输入要选择的对象名称”框中,键入计算机名\IIS_IUSRS,单击“检查名称”,然后单击“确定”。

                注意* Computername 是计算机名称的占位符。

                7.单击以选中“读取”复选框,然后单击“确定”。

                8.在“Web.config 属性”对话框中,单击“确定”。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2023-04-06
                  • 2016-08-21
                  • 2017-01-21
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-01-21
                  • 2017-04-15
                  • 1970-01-01
                  相关资源
                  最近更新 更多