我刚刚将我的服务器(Windows 2012R2)更新为上一个.Net Core 1.0 RTM
的{{1}} Windows主机包。我的应用程序适用于我的电脑,没有任何问题,但服务器一直显示:
.Net Core 1.0 RC2
之前曾使用过RC2版本。不知道会出现什么问题。
这是所有事件查看者都说:
HTTP Error 502.5 - Process Failure
Common causes of this issue:
The application process failed to start
The application process started but then stopped
The application process started but failed to listen on the configured port
最糟糕的是应用程序日志为空!我的意思是那些stdout_xxxxxxxxx.log文件是完全空的,并且都有0字节大小。
我该怎么办?如果没有记录错误,我怎么知道错误原因??
答案 0 :(得分:109)
我能够通过运行
来修复它“C:\ Program Files \ dotnet \ dotnet.exe”“C:\ fullpath \ PROJECT.dll”
在命令提示符下,这给了我一个更有意义的错误:
“指定的框架'Microsoft.NETCore.App',版本'1.0.1'是 未找到。 - 检查应用程序依赖性并定位安装在以下位置的框架版本: C:\ Program Files \ dotnet \ shared \ Microsoft.NETCore.App - 安装了以下版本: 1.0.0 - 或者,安装框架版本“1.0.1”。
如您所见,我的服务器上安装了错误的.NET Core版本。卸载以前的版本1.0.0并安装正确的版本1.0.1后,我能够运行我的应用程序。
答案 1 :(得分:65)
我有同样的问题,在我的情况下,我的应用程序池的用户身份的权限不足,在asp.net doc的Publishing to IIS页面上,列出了这个错误的几个原因:< / p>
buildOptions
project.json
中设置与发布RID冲突的平台。例如,不要指定x86平台并使用RID为win81-x64(dotnet publish -c Release -r win81-x64
)进行发布。项目将在没有警告或错误的情况下发布,但在服务器上出现上述记录的异常时会失败。processPath
元素的<aspNetCore>
属性,确认便携式应用程序为dotnet
,或为自包含应用程序确认。\ my_application.exe。 dotnet.exe
。确认系统路径设置中存在C:\Program Files\dotnet\
。dotnet.exe
。确认AppPool用户标识可以访问C:\Program Files\dotnet
目录。.UseIISIntegration()
的{{1}}方法确认您已正确引用IIS Integration中间件。WebHostBuilder()
扩展方法,请确认它位于.UseUrls()
上的.UseIISIntegration()
扩展方法之前。在IIS后面运行Kestrel时,WebHostBuilder()
必须为反向代理设置.UseIISIntegration()
,并且Url
不会覆盖其值。在我的情况下,这是第四个原因,我通过右键单击我的应用程序池来更改它,并且在Process Model下的高级设置中,我将Identity设置为具有足够权限的用户:
答案 2 :(得分:60)
我使用了IIS的硬重置(我刚刚安装了主机软件包)。
原来只需按下“重新启动”即可。在IIS管理器中是不够的。我只需要打开一个命令提示符并输入“iisreset&#39;
答案 3 :(得分:9)
所以我得到了一台新服务器,这次它是Windows 2008R2,我的应用程序正常运行。
我无法确定旧服务器的问题,但我有一个想法。
因为我之前编译了应用程序没有任何平台,它给了我dll
版本,只有在目标主机安装了.Net Core Windows Hosting
软件包的情况下才会生效。在我的情况下,它是安装,很好。
在应用程序无法运行后,我决定将其编译为控制台应用程序,win7-x64
作为运行时。这一次,当我在服务器上运行我的应用程序的exe
时,它崩溃了一个关于丢失的dll的错误:
The program can't start because api-ms-win-crt-runtime-l1-1-0.dll is missing
该DLL来自Universal C Runtime,它包含在 Visual C ++ Redistributable for Visual Studio 2015 中。
我尝试安装该软件包(x64和x86)但在Windows Server 2012 R2上每次都失败(不知道为什么)。
但是当我尝试在新服务器Windows Server 2008 R2中安装它们时,它们已成功安装。这可能是背后的原因,但仍然无法肯定地说。
答案 4 :(得分:4)
发布网络应用时遇到了同样的问题。 如果有人仍然遇到此问题,请修改 {AppName} .runtimeconfig.json
{
"runtimeOptions": {
"framework": {
"name": "Microsoft.NETCore.App",
"version": "1.1.2"
},
"configProperties": {
"System.GC.Server": true
}
}
}
将版本从&#34;版本&#34;:&#34; 1.1.2&#34; 更改为&#34;版本&#34;:&#34; 1.1.1&#34; 和everythign工作正常
答案 5 :(得分:4)
我遇到了同样的问题。
为了找到它的确切来源,我开启了登录 web.config文件:
<aspNetCore processPath="dotnet" arguments=".\MyWebService.dll" stdoutLogEnabled="**true**" stdoutLogFile=".\logs\stdout" />
并在MyWebService根文件夹中创建了日志子文件夹。
重新启动IIS并尝试执行API后,我收到错误,并且缺少正确的Core Runtime。下载安装后的DotNetCore.1.0.5_1.1.2-WindowsHosting错误消失了。
答案 6 :(得分:3)
有同样的问题,所有解决方案都不起作用。发现这个宝石,并认为如果它帮助其他人我会传递。在Server 2012 R2上安装DLL失踪错误,尝试重新安装VS C ++ 2015并收到错误。修复是执行以下操作:
似乎是文件
C:\ProgramData\Package Cache\...\packages\Patch\x64\Windows8.1-KB2999226-x64.msu
安装有问题。
打开管理命令提示符执行:
c:
mkdir tmp
mkdir tmp\tmp
move "C:\ProgramData\Package Cache\...\packages\Patch\x64\Windows8.1-KB2999226-x64.msu" c:\tmp
expand -F:* c:\tmp\Windows8.1-KB2999226-x64.msu c:\tmp\tmp
dism /online /add-package /packagepath:c:\tmp\tmp\Windows8.1-KB2999226-x64.cab
注意:用正确的文件夹名称替换“...”。重新安装VS C ++ 2015包之后。
答案 7 :(得分:3)
已解决我刚刚部署到 AZURE 时遇到了同样的问题。然后我尝试了同样的本地IIS,得到了同样的问题。因为我是.net CORE的新手,在我实际解决它之前几个小时挣扎。
在我们的解决方案中,在我发布到IIS之后,我观察了我的web.confile文件,特别是在<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" />
行
在我们的部署文件夹中,生成的web.config类似于:<aspNetCore processPath="dotnet" arguments=".\Yodlee.dll -argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
现在请尝试将visual studio解决方案中的上述配置更改为 <aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" forwardWindowsAuthToken="false" stdoutLogEnabled="false" />
在我们的新部署文件夹中,生成的web.config如下所示: <aspNetCore processPath="dotnet" arguments=".\Yodlee.dll" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
这解决了我的问题,希望它有所帮助。
答案 8 :(得分:3)
我的VS项目自动升级到.NET Core 1.1.2后,我的生产服务器上出现了这个问题。
我只是在我的生产服务器上安装了1.1.2 .net核心运行时:https://www.microsoft.com/net/download/core#/runtime
答案 9 :(得分:2)
我有类似的问题,引用夏洛克·福尔摩斯的话: “当你消除了不可能的事物,无论剩下什么,无论多么不可能,都必须是真理?”
我检查了我所定位的.NET框架是否安装在服务器上,事实证明它不是。我安装了4.6.2 .NET Framework,但它确实有效。
答案 10 :(得分:2)
当我将我的开发机器更新到Core 1.0.1时,我遇到了同样的问题,但是忘了更新服务器。
答案 11 :(得分:1)
我需要安装here找到的最新.net核心版本。 无需重新启动站点或服务器
答案 12 :(得分:1)
在我的情况下,在安装AspNetCore.2.0.6.RuntimePackageStore_x64.exe
和DotNetCore.2.0.6-WindowsHosting.exe
之后,我需要重新启动服务器,以使其在没有502错误网关和代理错误的情况下运行。
更新:
有一种方法可以在不重启的情况下使用它: https://stackoverflow.com/a/50808634/3634867
答案 13 :(得分:1)
我通过添加&#34;编辑权限&#34;解决了这个问题。到站点的应用程序,映射到物理目录,然后选择可以访问此根文件夹的Windows用户。 (私人网络)。
答案 14 :(得分:1)
我在尝试将我的.NET Core 2.0 API发布到AWS EB时遇到HTTP错误502.5,并通过将以下代码添加到.csproj来解决它:
<PropertyGroup>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
答案 15 :(得分:1)
使用管理员凭据打开命令提示符
键入以下命令并按Enter
> IISRESET
OR
使用管理员凭据打开 Visual Studio 2017
在 Package Manager控制台中键入以下命令,然后按Enter键
PM > IISRESET
PM> IISRESET
Attempting stop...
Internet services successfully stopped
Attempting start...
Internet services successfully restarted
答案 16 :(得分:1)
对我来说,这是由于安装了不同版本的.Net Core引起的。我将开发服务器和生产服务器配对,并且可以正常工作。
答案 17 :(得分:1)
在我的情况下,服务器上安装的Net Core版本存在问题。 我只是安装与我的开发机器相同的版本,一切正常: - )
答案 18 :(得分:1)
当我尝试发布我的Web应用程序的Debug版本时,我遇到了同样的问题。这组文件不包含具有适当属性web.config
值的文件processPath
。
我从Release版本中获取此文件,将值分配给我的exe文件的路径。
<aspNetCore processPath=".\My.Web.App.exe" ... />
答案 19 :(得分:1)
我遇到了同样的错误,与VSG24在建议的答案中描述的问题相同 - 在CMD中键入'dotnet'时出现了令人讨厌的错误消息:
由于缺少api-ms-win-crt-runtime-l1-1-0.dll,程序无法启动
我通过在 Windows Server 2012 R2 上手动安装以下2个更新解决了这个问题(并且先决条件和链接的所有其他更新 - 请在Microsoft网站上仔细阅读安装说明):< / p>
- KB2919355
- KB2999226
醇>
希望这有助于某人。
答案 20 :(得分:1)
在我的情况下分享这个错误是因为我忘了更新 project.json :
"buildOptions": {
"emitEntryPoint": true
}
答案 21 :(得分:1)
我有同样的问题。我将应用程序池标识更改为网络服务帐户。然后我在web.config中明确设置dotnet.exe的路径,以使应用程序正常工作,正如@danielyewright在他的github评论中所说的那样。它在设置路径后起作用。
由于
答案 22 :(得分:0)
我遇到了同样的问题,在我的情况下,原因是EF内核试图从appsettings.development.json
文件读取连接字符串。我打开它,发现连接字符串被注释。
//{
// "ConnectionStrings": {
// "DefaultConnection": "Server=vaio;Database=Goldentaurus;Trusted_Connection=True;",
// "IdentityConnection": "Server=vaio;Database=GTIdentity;Trusted_Connection=True;"
// }
//}
然后我像下面这样取消提交它们,问题就解决了:
{
"ConnectionStrings": {
"DefaultConnection": "Server=vaio;Database=Goldentaurus;Trusted_Connection=True;",
"IdentityConnection": "Server=vaio;Database=GTIdentity;Trusted_Connection=True;"
}
}
答案 23 :(得分:0)
我遇到了类似的问题(Asp.Net Core 2.x),该问题是由于尝试在64位Windows服务器上的IIS中运行32位asp.net核心应用程序引起的。根本原因在于,自动生成的web.config(如果您的项目未明确包含一个,而asp.net核心项目默认情况下不包含该项目)则不包含dotnet可执行文件的完整路径。当您在64位计算机上安装主机捆绑包时,它将安装64位和32位版本的dotnet,但是默认情况下该路径将解析为64位,并且32位asp.net核心应用程序将无法加载。在浏览器中,您可能会看到502.5错误,并且如果您查看服务器事件日志,则可能会看到错误代码0x80004005。如果您尝试从命令提示符处运行dotnet.exe来在该服务器上加载asp.net核心应用程序dll,则可能会看到类似“ BadImageFormatException”或“试图加载格式不正确的程序”之类的错误。对我有用的解决方法是将web.config添加到我的项目(和部署)中,并在该web.config中将完整路径设置为dotnet.exe的32位版本。
<?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="C:\Program Files (x86)\dotnet\dotnet.exe" arguments=".\My32BitAspNetCoreApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
</location>
</configuration>
答案 24 :(得分:0)
答案 25 :(得分:0)
答案 26 :(得分:0)
我遇到了同样的错误,发现问题是在发布到Azure期间,我的 web.config 文件被修改,因此以下行最终结果如下:
<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" startupTimeLimit="3600" requestTimeout="23:00:00" />
生产的问题是参数的内容:&#34; -argFile IISExeLauncherArgs.txt&#34;
似乎这个问题将在下一个.NET Core SDK(目前处于预览版)中得到解决,但目前,解决方法是将此块添加到.csproj文件中:
<Target Name="bug_242_workaround" AfterTargets="_TransformWebConfig">
<Exec Command="powershell "(Get-Content '$(PublishDir)Web.config').replace(' -argFile IISExeLauncherArgs.txt', '') | Set-Content '$(PublishDir)Web.config'"" />
</Target>
这将修改web.config并删除有问题的部分进行发布。
参考:https://github.com/aspnet/websdk/issues/242
希望它有所帮助。
答案 27 :(得分:0)
我不知道为什么这对我有用,但我使用的是Windows身份验证,我在BuildWebHost
的{{1}}中有了这段代码:
Program.cs
删除.UseStartup<Startup>()
.UseHttpSys(options =>
{
options.Authentication.Schemes =
AuthenticationSchemes.NTLM | AuthenticationSchemes.Negotiate;
options.Authentication.AllowAnonymous = false;
})
.Build();
位后,它现在可以正常工作,我仍然可以作为域用户进行身份验证。
.UserHttpSys
现在看起来像
BuildWebHost
答案 28 :(得分:0)
对我来说,Startup.cs中的connectionString在以下位置为null:
services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
并且它为null,因为应用程序没有在appsettings.json中查找连接字符串。
必须将Program.cs更改为:
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, builder) => builder.SetBasePath(context.HostingEnvironment.ContentRootPath)
.AddJsonFile("appsettings.json").Build())
.UseStartup<Startup>().Build();
答案 29 :(得分:0)
这是我想到的,最近在安装了更新后在Windows 10上发生了这种情况。从我收集的内容中,安装了一个Windows Defender更新,假设我的&#34; Project.dll&#34;(一个asp.net核心项目)表现得像病毒,因此被删除了。
所以,在你开始安装/卸载东西之前,我建议你做的第一件事就是检查确认你的&#34; Project.dll&#34;应该是它应该在哪里。
如果不再存在,请将其复制回该位置。
如果您在复制文件时遇到困难,请在Windows defender中添加项目文件夹的排除项。 (Learn how to do that here。)
这对我来说很有效,我在应用程序中重复了多个服务器。
答案 30 :(得分:0)
我也有这个问题(VS 15和17都发生了错误)。但是在VS15上它返回了CONNECTION_REFUSED
错误,在VS17上它返回了ASP.NET Core 1.0 on IIS error 502.5
。
<强> FIX 强>
导航到项目目录并找到隐藏文件夹.vs
(它位于项目文件夹目录中)。 (请记住显示隐藏的文件/文件夹)
关闭VS