发布 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...。总结:
- 在
web.config
的 <aspNetCore>
元素中,将 stdoutLogEnabled
设置为 true
。
<aspNetCore processPath=".\myapp.exe"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout" />
创建您的日志文件夹。
示例:给定 stdoutLogFile=".\logs\stdout"
,在您的应用程序根目录中创建 logs\
。 .\logs\
是存储日志的目录,可根据您的喜好进行配置。 stdout
是一个静态值,将添加到日志文件夹中的所有文件名之前。
运行 您的请求并打开日志文件。
关于 ASP.NET 核心模块的附加信息:ASP.NET Core Module
不要忘记在完成后禁用日志记录!
部署后在我们的环境中遇到错误时,我按照以下步骤操作。
服务器:Windows服务器 2016
IIS 版本:10.0
第 1 步:检查所有配置是否最新
第 2 步:验证 Cors 配置。我们启用了 cors,允许的列表是配置的一部分。
我用这两个步骤解决了。
部署后,它将主要与 appsettings.config 一起使用。确保配置正确。希望这有帮助。
不要因为错误没有提供任何线索而感到沮丧。要得到错误有一个简单的方法
- 打开命令提示符。
- 导航到映射到 IIS 的已发布文件夹位置。
- 类型 dotnet yourapplicationddllName.dll
- 现在打开 http://localhost:5000 或 https://localhost:5001。这将打开您的应用程序。
- 做你的事。您将在命令提示符控制台中收到错误。
当一些关键版本被延迟时,这个方法救了我好几次
干杯
如果您将应用程序部署到共享主机,则无法通过控制台运行。因此我建议执行以下步骤:
- 打开你的web.config
- 更改 stdoutLogEnabled=true
- 创建日志文件夹(不幸的是,默认情况下 AspNetCoreModule 也不会为您创建文件夹如果您忘记创建日志文件夹,事件查看器将记录一条错误消息:警告:无法创建 stdoutLogFile \?\YourPath\logs\stdout_timestamp.log, ErrorCode = -2147024893.)
- 值“.\logs\stdout”的“stdout”部分实际上引用的是文件名,而不是文件夹。这有点令人困惑。
- 运行 再次请求,然后打开 \logs\stdout_*.log 文件
- 玩得开心 ;)
注意 – 完成故障排除后,您需要关闭此功能,因为它会影响性能。
在 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...。总结:
- 在
web.config
的<aspNetCore>
元素中,将stdoutLogEnabled
设置为true
。
<aspNetCore processPath=".\myapp.exe"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout" />
创建您的日志文件夹。
示例:给定
stdoutLogFile=".\logs\stdout"
,在您的应用程序根目录中创建logs\
。.\logs\
是存储日志的目录,可根据您的喜好进行配置。stdout
是一个静态值,将添加到日志文件夹中的所有文件名之前。运行 您的请求并打开日志文件。
关于 ASP.NET 核心模块的附加信息:ASP.NET Core Module
不要忘记在完成后禁用日志记录!
部署后在我们的环境中遇到错误时,我按照以下步骤操作。
服务器:Windows服务器 2016
IIS 版本:10.0
第 1 步:检查所有配置是否最新
第 2 步:验证 Cors 配置。我们启用了 cors,允许的列表是配置的一部分。
我用这两个步骤解决了。
部署后,它将主要与 appsettings.config 一起使用。确保配置正确。希望这有帮助。
不要因为错误没有提供任何线索而感到沮丧。要得到错误有一个简单的方法
- 打开命令提示符。
- 导航到映射到 IIS 的已发布文件夹位置。
- 类型 dotnet yourapplicationddllName.dll
- 现在打开 http://localhost:5000 或 https://localhost:5001。这将打开您的应用程序。
- 做你的事。您将在命令提示符控制台中收到错误。
当一些关键版本被延迟时,这个方法救了我好几次 干杯
如果您将应用程序部署到共享主机,则无法通过控制台运行。因此我建议执行以下步骤:
- 打开你的web.config
- 更改 stdoutLogEnabled=true
- 创建日志文件夹(不幸的是,默认情况下 AspNetCoreModule 也不会为您创建文件夹如果您忘记创建日志文件夹,事件查看器将记录一条错误消息:警告:无法创建 stdoutLogFile \?\YourPath\logs\stdout_timestamp.log, ErrorCode = -2147024893.)
- 值“.\logs\stdout”的“stdout”部分实际上引用的是文件名,而不是文件夹。这有点令人困惑。
- 运行 再次请求,然后打开 \logs\stdout_*.log 文件
- 玩得开心 ;)
注意 – 完成故障排除后,您需要关闭此功能,因为它会影响性能。