将项目升级到ASP.NET Core 2.2之后,我尝试运行该应用程序(当然是本地),浏览器显示了一条错误消息,如下面的屏幕截图所示。
没有更多由Visual Studio错误资源管理器通知的错误。我不知道发生了什么。
答案 0 :(得分:2)
我遇到了这个问题,并提出了不同的解决方案。对我来说,我有一个与该应用程序已过期的软件包(我已经在NuGet上对其进行了更新,并且该库尚未在生产中被替换)。更新程序包已为我修复。
注意:我必须手动使用项目dll运行dotnet.exe,以便查看为我修复的消息。
希望这可以帮助其他人。
答案 1 :(得分:2)
在我的情况下,我将一些nuget软件包升级到了net core 2.2,但是我没有安装net core 2.2 sdk,因此我去了net core网站下载了最新的sdk,然后我做了一个“ net stop”是/ y”,然后以管理员身份在CMD中输入“ net start w3svc”。问题为我解决了。
答案 2 :(得分:1)
这是我第一次发布Azure Web App时发生的事情。这是我的解决方法:
使用Kudo / FTP浏览站点。在根文件夹中,有一个LogFiles文件夹,您可以在其中找到eventlog.xml
。在此文件中,我可以看到当Entity Framework Core尝试设置数据库时,我的Web应用程序具有SqlException,这导致我检查数据库权限(这对我来说是个问题)。
答案 3 :(得分:1)
似乎每个人对此都有不同的答案。我也有这个问题。您可以说有很多不同的原因导致此问题。如果您发现这些解决方案均无用,或者遇到尝试使用所有这些不同解决方案的问题,则可以尝试从发布文件夹的命令行运行应用程序。
发布后,如果收到此错误,请转至发布文件夹,然后打开命令/终端窗口,键入dotnet .\YourStartupProject.dll
后,您将收到异常错误,这将使解决此问题更加容易
例如,这是我在不设置SQL Server的情况下尝试新环境时收到的错误,当然会收到此错误。
Application startup exception: System.Exception: Could not resolve a service of type
'YourStartupProject.DataServices.DbContext.DbContext' for the parameter
'context' of method 'Configure' on type 'YourStartupProject.Startup'. --->
System.ArgumentNullException: Value cannot be null.
Parameter name: connectionString
解决错误后,请重试,冲洗,然后重复。
答案 4 :(得分:1)
请按照以下步骤操作:
在项目的根目录中创建一个目录:logs / stdout
从项目的根目录打开web.config文件并找到以下行:
<aspNetCore processPath=".\web.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
将stdoutLogEnabled
设置为true
并保存
重新加载您的应用程序并查看目录中的日志:logs / stdout
答案 5 :(得分:1)
如果重置项目并手动复制Program和Startup类对您有用,那么显然有些混乱。这有一些更大的潜在问题。可以使用OutOfProcess托管模型,但是使用.Net Core 2.2,您应该可以使用InProcess托管模型,因为它自然更快:在IIS中处理所有内容,而IIS和应用程序的Kestrel服务器之间无需进行额外的HTTP跳转。
如果在Visual Studio解决方案资源管理器中右键单击项目文件,请确保AspNetCoreModuleName标记具有AspNetCoreModuleV2值(而不是较早的AspNetCoreModule)。另外,检查Windows应用程序事件日志以识别潜在的罪魁祸首。即使错误消息有些含糊不清,但它们仍可能将您指向导致失败的代码中的确切行号。
最后,如果您将CI / CD与TFS一起使用,则appsettings.json文件中可能存在未正确替换为实际值(URL等)的环境变量。
答案 6 :(得分:0)
我的.NET Core站点工作正常,但过了一会儿,我收到了此错误( HTTP错误502.5-ANCM进程外启动失败... ); 我尝试了不同的方法。最后,我在IIS中添加新网站(使用其他端口),然后解决了该错误。
答案 7 :(得分:0)
在相同情况下可能会帮助其他人的另一个答案:我们在Azure上有一个AppService,其中在3条不同的路径上部署了3个NETCore项目:
自升级到 NETCore3.x 以来,我们了解到托管模型默认为“处理中”,因此我们必须编辑.csproj文件以将托管模型显式设置为“ Out” -Of-Process”,例如:
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>
但这还不够:实际上,我们还必须编辑Program.cs。为什么呢因为在Program.cs中是NETCore3.x中默认生成的代码,所以您具有以下代码:
public static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.ConfigureKestrel(o => o.AddServerHeader = false);
});
}
当我们用NETCore2.x版本的旧代码替换它时,如下所示:
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
return WebHost.CreateDefaultBuilder(args)
.UseKestrel(options => options.AddServerHeader = false)
.UseStartup<Startup>();
}
部署后,错误502.5 ANCM启动失败消失了:)希望这个答案可以对其他人有所帮助。
顺便说一句,我知道这篇文章与NETCore2.2有关,我们也遇到了同样的问题,但是我们决定切换到NETCore3.1,因为不再支持NETCore2.2,并且该版本在其他方面也存在问题。 / p>
答案 8 :(得分:0)
我在Web.config中将stdoutLogEnabled
设置为true
。
因此,在日志中,我发现错误为BadImageFormatException
。实际上我的Web应用程序是用32位编译的,因此我必须在Web.config中指定32位版本的dotnet:
<aspNetCore processPath="C:\Program Files (x86)\dotnet\dotnet" arguments=".\MyApp.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="OutOfProcess" />
答案 9 :(得分:0)
当在应用程序设置json中缺少项目启动期间所需的必需值(例如api端点)时,也会出现此问题。 您可能对其进行了参数化,但未提供参数值。 我在Azure devops中得到了这个
答案 10 :(得分:0)
我按照以下步骤进行了解决。祝你好运:)
步骤-1:转到解决方案资源管理器<右键单击<属性
第2步:
根据您的要求显示.Net Core框架或进行更改,但请确保支持所有其他现有DLL,或者需要更新。
第3步:
在您的PC中下载.NetCore软件包
见下面的链接
https://dotnet.microsoft.com/download
答案 11 :(得分:0)
甚至我也遇到过使用dotnet core 3.1 sdk将dotnet core 2.1转换为3.1和.netstandard 1.1 to 2.1的问题。
使用dotnet publish -c Release
命令时,文件以前在bin\Release\netcoreapp3.1
文件夹中,位于bin\Release\netcoreapp2.1\publish
中。
不确定确切的设置,我们仍然拥有publish文件夹,但是从publish文件夹的父目录进行部署就可以了
答案 12 :(得分:0)
对我来说,这是web.config文件,请确保已安装并正确指定路径
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\bin\Debug\netcoreapp2.0\logs\stdout">
事件查看器还可用于检测应用程序启动错误。
答案 13 :(得分:0)
在我的案例中,由于潜在的数据丢失,EF迁移引发了有关阻止执行其中之一的异常。 我必须查看自定义应用程序日志(通常是Log文件夹)才能找到答案。
我想问题中提到的错误是由于应用启动阶段的问题引起的。确实,迁移是在启动应用程序时运行的,因此,如果迁移失败,则该应用程序将无法完成启动。
因此,一般来说,当我们遇到此类错误时,我们应该专注于影响应用启动逻辑的事情。
答案 14 :(得分:0)
我的问题是发布后的web.config文件。 aspNetCore标记中的processPath缺少文件扩展名。就我而言,它是.exe
答案 15 :(得分:0)
对我来说,问题是缺少appsettings.json
我根据环境变量选择适当的appsettings.json文件(appsettings.production.json或appsettings.development.json)。事实证明,即使您不使用appsettings.json也是如此。
答案 16 :(得分:0)
我的解决方案:
工作。
答案 17 :(得分:0)
这对我有用: -我在已部署(IIS)文件夹中运行了项目的启动文件。请注意:这不会解决问题,但会告知您问题所在。就我而言,问题的原因是数据库迁移失败
答案 18 :(得分:0)
由于许多原因,可能会发生此错误。就我而言,这是一个例外,因为appsettings.json的格式无效。我发现是通过在web.config中启用stdout登录。
答案 19 :(得分:0)
答案 20 :(得分:0)
如果您正在使用ASP.Net Core 2.2版,则在appsettings.json中只需注释以下行-
“ AllowedHosts”:“ *”
它解决了问题。我的应用程序运行正常。
答案 21 :(得分:0)
您有2种解决方案(此答案适用于Windows服务器,而我对Linux服务器一无所知)。
第一:
将项目的所有文件夹(bin和obj文件夹除外)复制到服务器
在您的项目文件夹中打开cmd,然后运行以下命令:dotnet run
,然后向您显示所有警告和错误(如果您对上述命令有错误,则无法识别来自{{3}的下载点网核心sdk })
秒:
web.config是:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\BMS.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="OutOfProcess" />
</system.webServer>
</location>
</configuration>
我将其更改为:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\BMS.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
答案 22 :(得分:0)
我也遇到了同样的问题。当我查看解决方案的“输出”窗口时。
然后,我能够看到一个不同的错误,即“ 目标进程已退出而没有引发CoreCLR启动事件”,要解决此问题,我不得不删除了 Microsoft.AspNetCore.All 从我的Nuget软件包中安装 Microsoft.AspNetCore.App 。我还必须从here 安装正确的.Net SDK 。完成此操作后,重新启动计算机并打开解决方案,该错误消失了。希望对您有帮助
答案 23 :(得分:0)
对我来说,此问题是由dotnet publish
创建一个web.config条目stdoutLogFile=".\logs\stdout"
引起的。正确的值应为stdoutLogFile="\\?\%home%\LogFiles\stdout"
。
这可能是ASP.NET Core 2.2.0运行时中的错误,可能已在更高版本中修复。
答案 24 :(得分:0)
当我使用 Entity Framework Core 和 migrations 部署代码时,这发生在我身上,并且数据库状态和代码中的迁移之间不匹配。< / p>
答案 25 :(得分:0)
当我尝试将asp.net核心(out-of-process hosting model)网站部署到生产环境中的Windows Server 2012r2 IIS时,会出现问题。 我通过以下解决方案对此进行了修复:
答案 26 :(得分:0)
请谨慎发布。
当我将其发布到PreProd环境时,此conf可以正常工作: Portable
但是在我的Prod环境中,conf不起作用。我必须选择一个具体的: win-x64
我不知道原因。如果有人知道,我将不胜感激!
答案 27 :(得分:0)
好像我遇到了同样的问题。发生这种情况的原因是,如果解决方案中没有global.json文件,则VS将使用您的PC上安装的最新版本来构建(发布).net核心应用程序。所以,我做下一个解决方案:
添加一个具有.net核心版本的global.json文件。
{
"sdk": {
"version": "2.2.402"
}
}
从docs.microsoft.com:
global.json可以放在文件层次结构中的任何位置。 CLI从项目目录向上搜索找到的第一个global.json。您可以根据给定的global.json在文件系统中的位置来控制要应用的项目。 .NET CLI搜索从当前工作目录向上迭代路径的global.json文件。找到的第一个global.json文件指定使用的版本。如果安装了该版本,则使用该版本。如果找不到在global.json中指定的SDK,则.NET CLI会前滚到安装的最新SDK。未找到global.json文件时,前滚与默认行为相同。
https://docs.microsoft.com/en-us/dotnet/core/versions/selection
答案 28 :(得分:0)
在项目发布中发生了同样的失败。 该问题与最新的 Microsoft.AspNetCore.App 软件包有关。只需将其从2.2.x下调至 2.2.0 或转到dotnet.microsoft.com/download/dotnet-core/2.2并获取最新的 dotnet托管安装程序
答案 29 :(得分:0)
还有另一种情况对我造成了此问题:
我正在使用服务帐户运行应用程序池标识,并且我必须在该用户下运行dotnet dev-certs https
才能摆脱“ System.InvalidOperationException:无法配置HTTPS终结点”的问题。在启动过程中。
答案 30 :(得分:0)
我的问题是格式不正确的appsetttings.json文件。我通过web.config启用了标准输出日志记录,并能够引发引发此错误的底层异常。
答案 31 :(得分:0)
在Windows Server上部署针对.Net框架的.Net核心应用程序时,我遇到了同样的错误。我检查了服务器上的事件查看器,结果发现服务器未安装.net 4.7.2。
为我解决该问题。
答案 32 :(得分:0)
在我的情况下,这是 appsettings.json 中错误设置的日志级别。我有 Warn 而不是警告,这使应用程序崩溃并出现上述错误。
答案 33 :(得分:0)
我今天在托管时遇到了这个问题-在本地一切正常,但是一旦发布,就会出现此错误。
我仔细检查了软件包,发现一些.net核心内容已升级到3.0预览。
然后,我将VS2019中的生成选项从“框架相关”更改为“自包含”。构建和发布花费了5倍的时间,但现在可以了。
现在,我正在向主机技术支持人员检查什么可能是一个问题-正式地,它们仅支持2.1 / 2.2,因此这可能是3.0 Preview中的这些程序包,但是目标版本是2.2。
答案 34 :(得分:0)
此错误开始出现在我们的Dev服务器上。我一直在使用此发布命令创建一个“自包含”的文件文件夹以进行部署。
dotnet publish -c release -r win7-x64 --output:bin/self_contained
我的解决方法是改为使用以下命令发布“与框架相关的”部署:
dotnet publish --output:bin/framework_dependent
开发服务器确实在此文件夹* {C:\Program Files\dotnet\shared
我仍然不清楚为什么自包含的发布不起作用。您可能会认为自包含发布将是更可靠的方法,但在我看来,它不是。
此.NET Core blog post很有帮助。
答案 35 :(得分:0)