发布 dot net core 2 应用程序后启动应用程序时出错

an error occurred while starting the application after publishing dot net core 2 app

在 IIS 7.5 上发布我的 .net core 2 应用程序后,出现此错误:

an error occurred while starting the application.

有没有办法强制.net core 提交准确的错误信息而不是一般的信息?

您可以尝试通过控制台直接在您的 IIS 服务器上启动您的应用程序。

dotnet myapp.dll

你应该在那里得到一个更详细的错误。

我的问题只是 IIS 没有权限写入应用程序文件所在的文件夹。

这是一个非常糟糕的错误。

希望它能对某人有所帮助,而不是在上面浪费很多时间。

我发现这个 link 有用:How to troubleshoot: “An error occurred...。总结:

  1. web.config<aspNetCore> 元素中,将 stdoutLogEnabled 设置为 true
<aspNetCore processPath=".\myapp.exe"
            stdoutLogEnabled="true"
            stdoutLogFile=".\logs\stdout" />
  1. 创建您的日志文件夹。

    示例:给定 stdoutLogFile=".\logs\stdout",在您的应用程序根目录中创建 logs\.\logs\ 是存储日志的目录,可根据您的喜好进行配置。 stdout 是一个静态值,将添加到日志文件夹中的所有文件名之前。

  2. 运行 您的请求并打开日志文件。

关于 ASP.NET 核心模块的附加信息:ASP.NET Core Module

不要忘记在完成后禁用日志记录!

部署后在我们的环境中遇到错误时,我按照以下步骤操作。

服务器:Windows服务器 2016

IIS 版本:10.0

第 1 步:检查所有配置是否最新

第 2 步:验证 Cors 配置。我们启用了 cors,允许的列表是配置的一部分。

我用这两个步骤解决了。

部署后,它将主要与 appsettings.config 一起使用。确保配置正确。希望这有帮助。

不要因为错误没有提供任何线索而感到沮丧。要得到错误有一个简单的方法

  1. 打开命令提示符。
  2. 导航到映射到 IIS 的已发布文件夹位置。
  3. 类型 dotnet yourapplicationddllName.dll
  4. 现在打开 http://localhost:5000 或 https://localhost:5001。这将打开您的应用程序。
  5. 做你的事。您将在命令提示符控制台中收到错误。

当一些关键版本被延迟时,这个方法救了我好几次 干杯

如果您将应用程序部署到共享主机,则无法通过控制台运行。因此我建议执行以下步骤:

  1. 打开你的web.config
  2. 更改 stdoutLogEnabled=true
  3. 创建日志文件夹(不幸的是,默认情况下 AspNetCoreModule 也不会为您创建文件夹如果您忘记创建日志文件夹,事件查看器将记录一条错误消息:警告:无法创建 stdoutLogFile \?\YourPath\logs\stdout_timestamp.log, ErrorCode = -2147024893.)
  4. 值“.\logs\stdout”的“stdout”部分实际上引用的是文件名,而不是文件夹。这有点令人困惑。
  5. 运行 再次请求,然后打开 \logs\stdout_*.log 文件
  6. 玩得开心 ;)

注意 – 完成故障排除后,您需要关闭此功能,因为它会影响性能。