我使用“ 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]
},
我该如何解决? 我为此计划错过了什么? 请帮助我,谢谢您。
答案 0 :(得分:0)
答案 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>