无法访问站点错误 - 在 IIS 8.0 上托管 Angular 应用程序后
Site can't be reached error-After hosting Angular app on IIS 8.0
最近我在我们的测试服务器 (IIS 8.0) 上托管了一个 angular(版本 10)网络应用程序。并且还在 IIS 中安装了 URL Rewrite Module。
下面是我为规则添加的 web.config。
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect all requests" 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="./index.html" />
</rule>
</rules>
</rewrite>
<directoryBrowse enabled="true" />
<httpErrors errorMode="Custom">
<remove statusCode="404"/>
<error statusCode="404" path="/index.html" responseMode="ExecuteURL"/>
</httpErrors>
</system.webServer>
<system.web>
<customErrors mode="On" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="/index.html" />
</customErrors>
</system.web>
</configuration>
但是在托管应用程序后,该站点是 运行,但不断出现以下错误 无法访问站点,如下面的屏幕截图所示。出现错误后,URL 会在几秒钟内自动重新加载,然后网站会按预期运行。
以下是我的应用程序池设置。
这个错误的原因是什么?它也在没有空闲时间的情况下发生。我是否缺少任何 IIS 设置?或者需要添加任何其他 URL 书写规则?或者我的 angular 应用程序需要包含任何设置?请帮助我。
[更新]
借助调试工具发现错误在angular个配置文件中。
需要做两件事:
首先,您需要通过从 https://www.iis.net/downloads/microsoft/url-rewrite
下载来安装 url rewrite
然后您需要更改 web.config
文件以重定向到 index.html
文件以使用 angular 2 路由
这是您可以使用的 web.config
文件
<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="./index.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
没有其他要求。我的网站也以与上述相同的方式工作
我的网站也在 angular 10 Ivy
还有一件重要的事情是,将您的站点主文件夹权限授予所有人。由于无法访问权限站点,许多开发人员都会出现这种情况
经过一点点搜索和调试工具的帮助,终于能够修复错误。使用 ngsw-config.json
中的应用程序路径更改了索引 属性
"index": "YourAppPath/index.html"
这解决了问题。更多详情请阅读 angular 文档 here
有关错误的详细信息,请阅读此
最近我在我们的测试服务器 (IIS 8.0) 上托管了一个 angular(版本 10)网络应用程序。并且还在 IIS 中安装了 URL Rewrite Module。
下面是我为规则添加的 web.config。
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect all requests" 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="./index.html" />
</rule>
</rules>
</rewrite>
<directoryBrowse enabled="true" />
<httpErrors errorMode="Custom">
<remove statusCode="404"/>
<error statusCode="404" path="/index.html" responseMode="ExecuteURL"/>
</httpErrors>
</system.webServer>
<system.web>
<customErrors mode="On" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="/index.html" />
</customErrors>
</system.web>
</configuration>
但是在托管应用程序后,该站点是 运行,但不断出现以下错误 无法访问站点,如下面的屏幕截图所示。出现错误后,URL 会在几秒钟内自动重新加载,然后网站会按预期运行。
以下是我的应用程序池设置。
这个错误的原因是什么?它也在没有空闲时间的情况下发生。我是否缺少任何 IIS 设置?或者需要添加任何其他 URL 书写规则?或者我的 angular 应用程序需要包含任何设置?请帮助我。
[更新]
借助调试工具发现错误在angular个配置文件中。
需要做两件事:
首先,您需要通过从 https://www.iis.net/downloads/microsoft/url-rewrite
url rewrite
然后您需要更改 web.config
文件以重定向到 index.html
文件以使用 angular 2 路由
这是您可以使用的 web.config
文件
<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="./index.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
没有其他要求。我的网站也以与上述相同的方式工作 我的网站也在 angular 10 Ivy
还有一件重要的事情是,将您的站点主文件夹权限授予所有人。由于无法访问权限站点,许多开发人员都会出现这种情况
经过一点点搜索和调试工具的帮助,终于能够修复错误。使用 ngsw-config.json
中的应用程序路径更改了索引 属性"index": "YourAppPath/index.html"
这解决了问题。更多详情请阅读 angular 文档 here
有关错误的详细信息,请阅读此