IIS上的404,尽管动态内容处于活动状态

IIS上的404,尽管动态内容处于活动状态,iis,angular,Iis,Angular,我用VSCode编写了一个Angular2应用程序,并用lite服务器启动它路由和刷新功能完美无误。但是,当我试图在IIS 8中的Windows Server 2012 R2上部署应用程序时,我在我的节点模块文件夹中安装的几乎所有东西上都收到了404条错误消息。 此时,我的base href看起来是这样的 因此,在搜索了一段时间来修复它之后,我找到了一些东西,可以将base href更改为,这样我的页面可以正常工作,甚至我的路由也可以正常工作。但当我试图刷新浏览器页面时,页面显示404错误 这似

我用VSCode编写了一个Angular2应用程序,并用
lite服务器启动它
路由和刷新功能完美无误。但是,当我试图在IIS 8中的Windows Server 2012 R2上部署应用程序时,我在我的
节点模块
文件夹中安装的几乎所有东西上都收到了404条错误消息。 此时,我的base href看起来是这样的

因此,在搜索了一段时间来修复它之后,我找到了一些东西,可以将base href更改为
,这样我的页面可以正常工作,甚至我的路由也可以正常工作。但当我试图刷新浏览器页面时,页面显示404错误

这似乎是IIS动态内容的问题。所以我激活了动态内容,但页面刷新后仍然显示404。 所以我试过这样的方法

bootstrap(AppComponent, [
    ROUTER_PROVIDERS,
    provide(APP_BASE_HREF, useValue: '/#/'),
    provide(LocationStrategy, useClass: HashLocationStrategy)
]);
页面正在lite服务器上使用它(路由刷新等),但在IIS上刷新时仍然出现404错误。 我读了一些关于用web.config重写url的文章,但我什么都做不到

这是我部署的第一个angular2页面,请耐心等待

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

我想应该是这样的

bootstrap(AppComponent, [
    ROUTER_PROVIDERS,
    provide(APP_BASE_HREF, {useValue: '/'}),
    provide(LocationStrategy, {useClass: HashLocationStrategy})
]);

您应该配置IIS或通过web.config始终返回索引/默认页面(对于任何路由)

甘特和AngJobs的组合为我做到了这一点

我和你一起解决了

并且使用给定的代码

bootstrap(AppComponent, [
ROUTER_PROVIDERS,
provide(APP_BASE_HREF, {useValue: '/'}),
provide(LocationStrategy, {useClass: HashLocationStrategy})
]);
我创建了如下URL重写器规则:

有了这些,我的页面工作得非常完美。路由仍在工作,在页面刷新时,Url被重写,没有发生错误

谢谢你们的帮助,让我解决了这个问题


Marv

以下PowerShell代码将修复此问题。根据官方的Angular 2文档()“解决方案”是转发回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

随着我的url从“服务器/应用程序/仪表板”切换到“服务器/仪表板”,刷新时我仍然得到404,因为它试图获取“仪表板”文件夹。也许应该重写应用程序/仪表板?nut我不知道如何尝试更改
useValue:'/app/dashboard/
/server/app/dashboard/
。我不知道你的设置。下面是一个web.config示例,它正是这样做的:目前我正在将我的应用程序从beta升级到realease,之后我会看看你的解决方案。请耐心点:)