.Net Core 2.2 HTTP错误500.30-ANCM进程内启动失败

时间:2019-04-03 18:23:35

标签: asp.net-core .net-core

在运行iis 10的Windows Server 2016数据中心上托管asp.net核心mvc应用程序时,该应用程序无法加载,并显示消息HTTP错误500.30-ANCM进程内启动失败

尽管我在服务器上安装了.net core 2.2.3,但我还是使用.net core 2.2和vs 2017.9创建了该应用程序。

在服务器上:

  

C:\ Users \ user1> dotnet --info

.NET Core SDK(反映任何global.json):  版本:2.2.105  提交:7cecb35b92

运行时环境:  操作系统名称:Windows  操作系统版本:10.0.14393  操作系统平台:Windows  RID:win10-x64  基本路径:C:\ Program Files \ dotnet \ sdk \ 2.2.105 \

主机(可用于支持):   版本:2.2.3   提交:6b8ad509b6

.NET Core SDK已安装:   2.1.4 [C:\ Program Files \ dotnet \ sdk]   2.2.105 [C:\ Program Files \ dotnet \ sdk]

.NET Core运行时已安装:   Microsoft.AspNetCore.All 2.2.3 [C:\ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.All]   Microsoft.AspNetCore.App 2.2.3 [C:\ Program Files \ dotnet \ shared \ Microsoft.AspNetCore.App]   Microsoft.NETCore.App 2.0.5 [C:\ Program Files \ dotnet \ shared \ Microsoft.NETCore.App]   Microsoft.NETCore.App 2.0.7 [C:\ Program Files \ dotnet \ shared \ Microsoft.NETCore.App]   Microsoft.NETCore.App 2.2.3 [C:\ Program Files \ dotnet \ shared \ Microsoft.NETCore.App]

要安装其他.NET Core运行时或SDK,请执行以下操作:   https://aka.ms/dotnet-download

Windows应用程序事件日志显示:

  

具有物理根目录'C:\ inetpub \ wwwroot \ healthmonitormvc \'的应用程序'/ LM / W3SVC / 3 / ROOT'无法加载clr和托管应用程序。意外的异常:HRESULT 0x800700b7在c:\ b \ w \ da744fbcc13abce \ src \ servers \ iis \ aspnetcoremodulev2 \ inprocessrequesthandler \ inprocessapplication.cpp:198

中返回

GitHub上有几个关于此错误和结果的线程,但没有解决方案。

相同的代码在本地iis上有效。 myapp.exe也将加载(dotnet myapp.dll也是如此)。因此这似乎是一个iis配置问题(或GitHub上指出的.net核心缺陷,这意味着我可能正在寻求解决方法)。 stdout文件已创建,但没有内容。

该项目是非核心项目解决方案的一部分。但是,我使用vs Web Publisher发布了该项目,该项目按预期运行。

一个stackoverflow线程建议更改为OutOfProcess作为托管模型,但我不想用在过程外。它也无法以相同的结果加载。可能是.net 2.2.3被严重破坏的情况。但是由于我可以在本地运行它,所以存在一个可以正常工作的配置。

这是应用程序的web.config

    <?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=".\my.name.space.HealthMonitor.Mvc.exe" arguments="exec &quot;.\my.anme.space.HealthMonitor.Mvc.dll&quot;" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="InProcess">
        <environmentVariables>
          <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
        </environmentVariables>
      </aspNetCore>
      </system.webServer>
  </location>
    <system.web>
        <compilation targetFramework="netcoreapp2.2" />
    </system.web>
</configuration>

我希望该页面能够像在iisexpress或iis local中一样加载,在其中显示默认的即用型页面。

3 个答案:

答案 0 :(得分:2)

我们遇到了完全相同的问题,并删除了对我们有用的环境变量。 原因是我们在iis和web.config中都设置了相同的环境变量。

我的客人是 builder.AddEnvironmentVariable()在构建IConfiguration时抛出重复的键异常。

要检查您的iis环境变量,请转到您的站点, ConfigurationEditor ->选择顶部部分 system.webServer / aspNetCore < / p>

希望这有助于清除一些疑问

答案 1 :(得分:2)

我遇到了同样的问题,发现在 Azure App Service 中运行dotnet YourAPI.dll,请转到:

App Service -> Advanced Tools -> Go (Will take you to Kudu) -> Debug console -> PowerShell;

然后导航至site/wwwroot,现在运行:

dotnet YourAPI.dll

结果显示了一条详细的错误消息。

答案 2 :(得分:0)

删除环境变量

<environmentVariables>
  <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="DEVELOPMENT" />
</environmentVariables>

导致页面加载。我不完全理解为什么。显然,我不了解它如何与应用程序交互(尽管我以为是)。

服务器集显示:

>ASPNETCORE_ENVIRONMENT=Development

我确实注意到IIS管理器配置编辑器针对相同的环境变量显示了开发以及我的开发。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

namespace My.Name.Space.HealthMonitor.Mvc
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            services.Configure<IISServerOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.AutomaticAuthentication = true;
            });


            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();
            app.UseCookiePolicy();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }
    }
}

也许另一个菜鸟会受益。问题已基本解决,并向我表明我需要更好地了解ASPNETCORE_ENVIRONMENT。 欢迎提出建设性意见。