我在VSCode中编写了一个Angular2应用程序并使用<?xml version="1.0"?>
<Period>
<AllContacts>
<Entry>
<entity-Person>
<CellPhone>3095550101</CellPhone>
<FirstName>Brrzzz</FirstName>
<LastName>Grbbs</LastName>
</entity-Person>
<PrimaryPhone>mobile</PrimaryPhone>
</Entry>
</AllContacts>
<State>TX</State>
</Period>
启动它,路由和刷新工作完美且没有任何问题。但是,当我尝试在lite-server
上部署应用时,我在Windows Server 2012 R2 in IIS 8
文件夹中安装的几乎所有内容都收到了404错误消息。
此时我的基础href看起来像node_modules
。
所以经过一段时间搜索修复它的方法后,我找到了一些东西可以将基础href更改为<base href="/">
并且我的页面正常工作,甚至我的路由工作正常。但是,当我尝试刷新浏览器页面时,页面显示404错误。
这似乎是IIS动态内容的问题。所以我激活了动态内容,但在页面刷新后仍显示404。 所以我尝试了类似的东西
<base href="@Url.Content("~/")" />
Page正在使用lite-server(路由刷新等),但在IIS上刷新时仍然出现404错误。 我读了一些关于用web.config重写url的内容,但我无法正常工作。
这是我第一个部署的angular2页面,所以请耐心等待我。
我希望你们中的一些人可以帮助我。
答案 0 :(得分:2)
您应该配置IIS或通过web.config始终返回索引/默认页面(对于任何路由)
答案 1 :(得分:0)
我认为应该是
bootstrap(AppComponent, [
ROUTER_PROVIDERS,
provide(APP_BASE_HREF, {useValue: '/'}),
provide(LocationStrategy, {useClass: HashLocationStrategy})
]);
答案 2 :(得分:0)
Günter和AngJobs的回应组合为我做了。
解决了这个问题并使用给定的代码
bootstrap(AppComponent, [
ROUTER_PROVIDERS,
provide(APP_BASE_HREF, {useValue: '/'}),
provide(LocationStrategy, {useClass: HashLocationStrategy})
]);
我创建了一个UrlRewriter规则: Example
随着我的页面工作完美。路由仍然有效,在页面刷新时,Url会被重写,并且不会出现错误。
Thx对你们两人的帮助都让我解决了!
马福
答案 3 :(得分:0)
以下PowerShell代码将解决此问题。根据官方的Angular 2文档(http://blog.angular-university.io/angular2-router/),“解决方案”将转发回index.html,然后说明路线:
Import-WebAdministration
# Grab the 404 handler and update it to redirect to index.html.
$redirect = Get-WebConfiguration -filter "/system.WebServer/httperrors/error[@statusCode='404']" -PSPath IIS:\Sites\LIS
$redirect.path = "/index.html"
$redirect.responseMode = 1
# shove the updated config back into IIS
Set-WebConfiguration -filter "/system.WebServer/httperrors/error[@statusCode='404']" -PSPath IIS:\Sites\LIS -value $redirect