【问题标题】:Asp.Net is looking for the web.config in the wrong placeAsp.Net 在错误的地方寻找 web.config
【发布时间】:2020-08-04 17:40:33
【问题描述】:

我遇到了一个奇怪的问题 - 到目前为止,我只在一台机器上处理过这个应用程序。我已经在客户办公室的开发机器上下载了一个 asp.net 网络应用程序。

当我尝试通过 Visual Studio 在调试模式下运行应用程序时,我收到 500.19 错误 - 这通常意味着权限问题。在我注意到它正在寻找配置文件的目录之前,我经历了检查权限的动作。

错误中显示的“配置文件”是

\\?\C:\Users\{my-name}\Documents\{project-name}\web.config
  • 然而正确的位置实际上是

    C:\Users\admin\Documents\projects\{项目名称}\web.config

有谁知道网络配置的位置在哪里指定?我一直认为它只能在根目录中。

【问题讨论】:

  • 你的意思是projects\{project-name}\web.config而不是projects{project-name}\web.config
  • 是的,这是我认为发生的最奇怪的事情之一。我没有浏览 .sln 期望看到相对路径应该是的绝对路径,但什么也看不到。
  • 您的 SLN 文件与此无关...除非这是一个无项目的网站项目而不是 Web 应用程序项目?
  • 这是一个 JIT 编译的旧网站项目。它有一个 sln,但没有 vcproj 文件。

标签: asp.net visual-studio


【解决方案1】:

事实证明,这是升级到 Visual Studio 2015 的原因。

新的 Visual Studio 不是 .suo 文件,而是有一个 .vs 文件夹,其中包含特定于项目实例的文件。开发站点的根目录包含在此处。

我删除了这些文件并将 .vs/* 添加到我的 .gitignore 文件中,并且没有更多问题。

【讨论】:

    【解决方案2】:

    事实证明,在我们的基础架构中,在带有节点 <system.webServer> 的 web.config 中,我们有一个名为 <rewrite /> 的嵌套节点。 IIS 无法识别那个。

    通过删除该节点或安装缺少的功能 (url-rewrite),应用程序按预期启动。

    【讨论】:

      【解决方案3】:

      在我的例子中,IIS 中的顶级网站的物理路径为:

      C:\Users\MyUserName\Documents\My Web Sites

      出于某种原因,这意味着 IIS 拒绝查看其他任何地方,即使我下面的项目已转换为应用程序。

      帮我修好:

      1. 转到 IIS
      2. 右键单击顶级网站(即“默认网站”,或同级有问题的网站)
      3. 选择“管理网站 > 高级设置”
      4. 将物理路径改为C:\inetpub\wwwroot
      5. 保存并重新加载网站

      然后我可以为我的应用程序设置任何路径,并且 IIS 可以按预期工作。

      【讨论】:

        【解决方案4】:

        假设您的意思是 Documents\projects\{project-name}\web.config 而不是 Documents\projects{project-name}\web.config,您会看到 Application Scopes 的效果。

        在 IIS 中,多个完全独立的 Web 应用程序可以通过拆分为“应用程序范围”成为同一网站的一部分 - 通常通过指定前缀路径后跟范围根(在 IIS7 之前为应用程序范围)来工作可以是物理目录或虚拟目录,因为 IIS7 它们始终是虚拟目录,但仍然可以表示物理目录)。

        打开 IIS 管理器并选择 Visual Studio 为您的项目创建的(虚拟)目录,然后在左侧导航窗格中右键单击它并选择“转换为应用程序”,然后 ASP.NET 将查找 Web。 config 文件(以及 bin 目录等)仅在此文件夹中,而不是网站根目录中。

        请注意,网站根目录也被视为应用程序范围根目录,因此常见错误消息“/”应用程序中的异常”。如果您在另一个应用程序根目录中获得 YSoD,您将看到“/subFolder”应用程序中的异常”消息。

        【讨论】:

        • 很好地发现缺少的反斜杠 - 我没有意识到 StackOverflow 有转义字符。您的想法是有道理的,但这正在通过 Visual Studio 在 IIS Express 中运行(或至少尝试运行)。是否可以通过该设置以某种方式发生等效情况?
        猜你喜欢
        • 2020-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-25
        • 2020-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多