如何修复404 Not Found错误,用于在Angular中打开新标签页

时间:2019-09-13 16:54:18

标签: angular

我使用“ Window.open()”在Angular中打开新标签页。

我的代码是:

let windowRef: Window = window.open('inspection/' + sheetId + '/' + equipmentId, '_blank');

它对于我的本地计算机非常有效。但是,当我使用IIS时,它不起作用。 打开新标签后,它会显示:

HTTP错误404.0-找不到 您要查找的资源已被删除,名称已更改或暂时不可用。

该错误的详细信息:

Detailed Error Information:
Module             IIS Web Core
Notification       MapRequestHandler
Handler            StaticFile
Error Code         0x80070002
Requested URL      http://www.testinspection.com:80/inspection/2/GBRX700775
Physical Path      C:\inetpub\wwwroot\Inspection\inspection\2\GBRX700775
Logon Method       Anonymous
Logon User         Anonymous

这是我的路由代码:

 {
        path: 'inspection/:sheetId/:carId', component: InspectionTabComponent, resolve: { inspectionData: InspectionResolve },
        canActivate: [AuthGuard], canDeactivate: [CanDeactiveGuard]
 },

我该如何解决? 我为此计划错过了什么? 请帮助我,谢谢您。

2 个答案:

答案 0 :(得分:0)

肯定是IIS的配置,如果您的本地设备运行良好。 您应该使用此documentation

配置inbound rule

希望它会对您有所帮助:)

答案 1 :(得分:0)

这是它应该如何工作: 你打开 mysite.com/。静态服务器返回您的 index.html,该 html 包含指向具有您的应用程序所需的所有逻辑的脚本的链接。

现在让我们尝试导航到 mysite.com/preview/ 大部分服务器都会尝试查看 对于 /preview.html 或 /preview/index.html,或 idk... 并且没有这样的页面。这就是为什么你需要重写这个请求并返回原始的 /index.html ,它包含你的应用程序需要的一切。 /preview 导航将在客户端 javascript 内部处理 - 在 angular 库内部,就是这样。

config 可能看起来像来自 this post

的配置
<rewrite>
    <rules>
        <rule name="SPA Routes" stopProcessing="true">
        <!-- match everything by default -->
        <match url=".*" />
        <conditions logicalGrouping="MatchAll">
            <!-- unless its a file -->
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <!-- or a directory -->
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <!-- or is under the /api directory -->
            <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
            <!-- list other routes or route prefixes here if you need to handle them server side -->
        </conditions>
        <!-- rewrite it to /index.html -->
        <action type="Rewrite" url="/index.html" />
        </rule>
    </rules>
</rewrite>