【发布时间】:2018-09-26 11:55:37
【问题描述】:
我使用 Angular 模板创建了一个新的 ASP.NET Core 2.1 Web 应用程序。
在 Debug 和 Release 模式下都成功地在本地运行。
创建了一个发布配置文件到文件系统,它成功发布到本地文件夹。
已安装:.NET Core 2.1 Runtime & Hosting Bundle for Windows
然后在 IIS 中,
- 创建了一个新的应用程序池 - 使用
.net CLR= "No Managed Code" - 然后在
Default Web Site> 创建了新应用程序,它使用我创建的新应用程序池,并指向文件系统,指向在 VS 2017 帮助下发布的已发布目录
所以在web.config 文件中我更改了environmentVariable 以查看错误
<aspNetCore processPath="dotnet" arguments=".\WebApplication1.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>
我不知道下一步该做什么,我已经尝试在 Stack-overflow 和 Google 上寻找解决方案 here、here 等等。
当我在web.config 中将stdoutLogEnabled 设置为true 时,我会在应用程序的日志中看到这一点
托管环境:生产 内容根路径:C:\prodSites\beedeal 现在收听:http://127.0.0.1:26261 申请开始。按 Ctrl+C 关闭。 警告:Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware3 无法确定重定向的 https 端口。 失败:Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware1 执行请求时发生未处理的异常。 System.InvalidOperationException:SPA 默认页面中间件无法返回默认页面“/index.html”,因为未找到它,并且没有其他中间件处理该请求。 您的应用程序正在生产模式下运行,因此请确保它已发布,或者您已手动构建了 SPA。或者,您可能希望切换到开发环境。
在 Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.c__DisplayClass0_0.b__1(HttpContext 上下文,Func`1 next) at Microsoft.AspNetCore.Builder.UseExtensions.c__DisplayClass0_1.b__1(HttpContext 上下文)在 Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext 上下文)在 Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(HttpContext httpContext) 在 Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext 上下文)在 Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext 上下文)在 Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.Invoke(HttpContext 上下文)
但没有找到解决方案..
【问题讨论】:
-
似乎有一些东西试图启动角度开发服务器(package.json > scripts > start 应该调用类似 ng start 的东西)。如果是这样,那就错了。对于生产,必须使用 ng build 构建您的 Angular 应用程序,这将生成由 IIS 交付的静态文件。
-
默认开启开发者异常页面,不切换环境到dev。看看会发生什么。
-
@ChristophLütjen 我使用了 Visual Studio 发布过程,并且输出文件夹似乎有静态文件,是在通过 Visual Studio 发布过程中创建的,所以我不确定你问什么..跨度>
-
我对IIS一无所知,我只是在您的错误消息中看到它似乎试图运行ng start。这是错误的,因此您可以检查为什么会发生这种情况。