虽然动态内容处于活动状态,但IIS上的404

时间:2016-06-09 13:50:56

标签: iis angular

我在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页面,所以请耐心等待我。

我希望你们中的一些人可以帮助我。

4 个答案:

答案 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的回应组合为我做了。

我用Url Rewriter

解决了这个问题

并使用给定的代码

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