首页 > 解决方案 > IIS7 上的 Angular 7 应用程序中的 500(URL 重写模块错误。)

问题描述

我有一个在 IIS 7 上托管的 Angular 7 应用程序,应该可以通过https://example.com/fitcbooks/web访问它。这工作,然后突然停止 - 因为我似乎无法理解的原因。服务器上的 URL 重写似乎正在工作(用于重定向同一服务器上的其他站点),但它只是针对这个特定的应用程序而崩溃。

我已经为 IIS7 安装了 URL 重写模块 2。我还使用 --base-ref 构建了 Angular 应用程序,并且已经使用了 web.config 代码,如下所示。我还构建了该应用程序的本地版本,它在我运行 AMPPS 的 macbook 上完美运行,消除了应用程序本身的任何问题。这看起来像一个服务器问题。

网络配置:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Angular Routes" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/fitcbooks/web/index.html" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

索引.html:

<base href="/fitcbooks/web/">

目前,该应用程序的预加载器只是永远加载。控制台显示几个 500 (URL Rewrite Module Error.) 错误。请帮助。

标签: angularwindowsmacosiisurl-rewriting

解决方案


终于解决了这个问题!

问题是在mac上压缩文件的自动加密。由于上周的 iOS 开发,我刚从 Windows 切换到 Mac,所以我是新手。

我能够通过使用IIS 中的失败请求跟踪规则阅读 500 HTTP 错误的详细信息来解决这个问题(感谢@LexLi 提供的 Fiddler 提示)。我观察了日志,发现具体的错误是500:50。也找到ErrorCode Access is denied. (0x80070005)了,这让我意识到它与访问文件有关。经过一些在线挖掘,我找到了这个论坛帖子(https://forums.iis.net/t/1164360.aspx),安装了进程监视器并清楚地看到,服务器无法访问应用程序的文件。

应用程序中的文件夹带有绿色标签,所以我意识到它们是加密的。我在没有加密的情况下重新上传了文件,仅此而已 - 该应用程序正在运行!因此,我了解到在 Mac 上压缩的文件可能会给您在 Windows 上带来问题。

只是把它放在这里以防它帮助别人。


推荐阅读