IIS Express - 500.19 无法读取配置文件 - 因为它正在寻找错误的路径

IIS Express - 500.19 Cannot read configuration file - because it's looking at the wrong path

我最近将我的根 TFS 文件夹从 D:\TFS\systemstfs 重命名为 D:\TFS\sys,因为其中一个项目的路径对于 Windows 来说太长了。现在,当我尝试使用 IIS Express(项目 URL http://localhost:59729/Flowers/wsBusinessLayer/)在 VS2013 中 运行 一个不同的项目(D:\TFS\sys\companydomain.com\Dev\Flowers\wsBusinessLayer)时,我得到了浏览器中出现以下错误消息:

HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.

Module - IIS Web Core
Notification - BeginRequest
Error Code - 0x80070003
Config Error - Cannot read configuration file
Config File - \?\D:\TFS\systemstfs\companydomain.com\Dev\Flowers\web.config
Requested URL - http://localhost:59729/Flowers/wsBusinessLayer/InformationServices.asmx
Physical Path - D:\TFS\sys\companydomain.com\Dev\Flowers\wsBusinessLayer\InformationServices.asmx

(强调我的,D:是我机器上的第二个硬盘,不是网络共享)

我很清楚问题出在哪里(配置文件路径错误),但我不知道如何解决它。我试过:

但是运气不好。有人遇到过这个吗?

结果我必须按以下方式编辑 %USERPROFILE%\Documents\IISExpress\config\applicationhost.config -

<configuration>
  <system.applicationHost>
    <sites>
      <site name="wsBusinessLayer">
        <application path="/">
           <virtualDirectory path="/Flowers" physicalPath="D:\TFS\sys\companydomain.com\Dev\Flowers" />

我不知道这个文件是如何改变的"properly",但是手动编辑它工作正常。

这是另一个不涉及 的可能解决方案:

  • 右键单击 Web 项目 > Web > 项目 Url >(例如 'localhost:5459')然后增加端口号,这将强制在那个文件。

在我的例子中,我还需要更改身份验证模式,这可以通过以下方式完成:

  • Select Web 项目 > 按 F4 > 根据需要设置 Windows 身份验证(在我的例子中启用)。

就我而言,以下更改解决了此错误:

打开 [SolutionFolder]>.vs[Hidden Folder] 中的 applicationhost.config 文件并更改 windowsAuthentication 部分中 Deny[= 中 overrideModeDefault 属性的值24=]允许。如下图

更改我的 MVC 项目上的端口号解决了我的问题。我绕了一个多小时寻找答案。谢谢索尼克灵魂。

当一个微小的调整可以修复严重损坏的东西时,我总是感到惊讶。

我增加了端口号,错误神奇地解决了。

Project Properties > Web > Project Url 

使用 Visual Studios 2015。

我在 IIS 8.5 上遇到了同样的错误(不是 express)

对我来说,这是因为我用一个副本替换了文件夹并重命名了它,而 IIS 是 运行。由于某种原因,它一直出错。我必须从 IIS 中删除网站定义并重新添加它才能使其正常工作。

如果您使用的是本地 IIS Web 服务器,请重命名自定义虚拟目录,保存并重试。之后,你可以把原来的名字放回去。

就我而言,错误的路径记录在我从同事那里收到的 zip 文件中的 .vs 文件夹中。通常,我会通过未签入 .vs 的源代码库获取源代码。

删除 .vs 文件夹解决了我的问题。

就我而言,我收到了一台新机器,但是当我尝试 运行 源代码(从旧机器复制而来)时出现此错误。 从源代码目录下的 .vs\config 文件夹中删除 applicationhost.config 文件解决了这个问题。

今天遇到了同样的问题。

导致问题的更改

将功能从单独的控制器转移到家庭控制器。 我确实将视图及其背后的功能从 Controller'X' 移动到了 HomeController

问题的性质

  1. 当 运行 通过 IIS express/ Visual Studio
  2. 时一切正常
  3. 在本地部署到 IIS 时一切正常。
  4. 部署到部署机器时,一切都变得一团糟。
  5. 如果我在部署计算机的 IIS 中部署到 'new Site',工作正常。

修复

  1. 从 IIS 中删除 Site/application 池实例。
  2. 重新创建它们。
  3. 部署。

在我的例子中,我将路径中的 .. 替换为普通文件夹路径。

TL;DR

我使用了 "clever" 技巧来利用我的脚本文件的相对路径,因为我不想硬编码我的文件夹地址。

"C:\Program Files\IIS Express\iisexpress.exe" /path:"%~dp0..\Lagardsdorren\bin\Debug\netcoreapp2.2\publish" /port:44342

我知道,但我花了一些时间才意识到,.. 在 IIS(express) 中不受欢迎,因为它可以让您自己离开站点主目录。在我的情况下它没有,但我 guess IIS(express) 只是停止了其中包含 .. 的任何东西。

我不知道如何回到我聪明的相对路径,但那是另一个问题。

如果使用带有 "Shared Folders" 的虚拟机 -- 我使用 Workstation Pro 来共享文件夹。当项目位于托管在 HOST PC 上的 "Shared folder" 中时,我无法 运行 该项目。将项目移至 "Local" 驱动器已为我解决。

我通过进入项目属性 > Web > 并单击 "Create virtual directory" 解决了这个问题,然后我不必更改我的端口。

我在从同事那里获取代码时遇到了这个错误,它指的是她的路径。我尝试检查整个应用程序文件夹中的路径但不能。所以我再次从同事以外的其他来源获得了代码。

我的设置是作为 Azure 云服务托管的 .NET 4.6.1 MVC 项目。当 运行 在本地使用 Visual Studio 2019 和 IIS Express 时,我遇到了这个错误。我能够修复错误。在我的例子中,错误是转移注意力的错误,是另一个问题的征兆。对我来说,我必须删除对 System.http.net、System.runtime 和 System.Runtime.InteropServices 的引用。然后我用 Nuget 添加了这三个引用的最新版本。

问题是我的代码找不到这三个包。每次我切换 git 分支时都无法找到包,但这是一个完全独立的错误,我仍在努力解决。我找出问题所在的方法是 运行 代码并查看 Visual Studio 2019 中的 "build" 和 "debug" 输出。我看到与代码相关的错误不是能够找到 System.Http.Net,所以我修复了它,然后看到了其他包的错误并修复了它们。真正的问题是我的代码出现异常而不是 运行 正确,它恰好显示为这个 500.19 错误。

另一个可能的影响因素是我在当天早些时候禁用了 "just my code"。这似乎导致我的代码在遇到异常时不会中断。一旦我重新打开它,我的代码就会在异常发生时中断,这也帮助我找出了问题的原因。要找到此选项,请进入工具 > 选项 > 调试 > 常规 > "Enable Just My Code".

原错误:

对我来说,这是因为我重命名了一个路径文件夹并从 github 获取项目。 前往

Right click on your startup project > project properties > Web > click on Create Virtual Directory

它用新的虚拟目录替换了旧的虚拟目录。