我正在尝试向 IIS 发布一个.NET Core ASP.NET 网站,我从 RC2 升级到 RTM。
作为一个完整性检查,我成功地从 Visual Studio 2015 发布了 template/sample“ASP.NET 核心 Web 应用程序(.NET 框架)”应用程序。
但出于某种原因,当发布 RTM 升级的应用程序时,我得到HTTP 错误 502.3 - 错误的网关指定的 CGI 应用程序遇到错误,服务器终止了该进程.
该站点正在从 Visual Studio 运行 IIS Express。
我该怎么调试呢?有人有主意吗?
web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath=".\MyApp.exe" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
</configuration>
project.json
{
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true,
"warningsAsErrors": true
},
"dependencies": {
"Microsoft.AspNetCore.Diagnostics.Elm": "0.1.0",
"Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
"Microsoft.AspNetCore.Authorization": "1.0.0",
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Hosting": "1.0.0",
"Microsoft.AspNetCore.Hosting.Abstractions": "1.0.0",
"Microsoft.AspNetCore.Http.Extensions": "1.0.0",
"Microsoft.AspNetCore.Localization": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Routing": "1.0.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.AspNetCore.Session": "1.0.0",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.Extensions.Caching.SqlServer": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0"
},
"frameworks": {
"net461": {}
},
"tools": {
"BundlerMinifier.Core": "2.0.238",
"Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
},
"scripts": {
"prepublish": [ "bower install", "dotnet bundle" ],
"postpublish": "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"
},
"publishOptions": {
"include": [
"wwwroot",
"web.config",
"appsettings.json",
"**/*.cshtml",
"Config/*.json"
]
]
}
}
3 回答
这有三个想法:
读这个并确保你已经涵盖了它所说的一切。
从命令行运行已发布的
.\MyApp.exe
。那样有用吗?如果是,您知道您有 IIS 集成问题。
如果没有,您知道您有应用程序问题。
将
stdoutLogEnabled="false"
更改为true
,然后检查stdoutLogFile=".\logs\stdout"
处的日志。 error(s)可能会告诉你一些事情。在事件查看器中检查 IIS 应用程序日志。 error(s)可能会告诉你一些事情。
事件查看器应用程序日志
如果您长时间运行任务,并且 Web 浏览器在 2 mins(the 默认请求时间内没有收到响应,则会出现此错误。因为在超时后,IIS 将替换应用程序以使用“Bad Gateway”响应客户端。
也许您应该在 web.config 中更改请求时间。
在system.webServer/aspNetCore部分设置requestTimeout属性,以指定 ASP.NET 核心模块等待来自侦听%ASPNETCORE_PORT%的进程的响应的持续时间。
像这样:
解决方案对我不起作用,但做了什么:
启用 Web 开发人员模式(在浏览器中按 F12 键)=> application tab =>然后删除所有 cookie。刷新页面并 vo:它有效。您也可以复制您的 URL 并粘贴到另一个未运行的浏览器任何 MVC 项目.
我的项目在 Internet Explorer 和 Microsoft Edge 上工作,没有任何更改。也许这就是你错误的原因。