HTTPエラー500.35-同じプロセス内のANCM複数のインプロセスアプリケーションASP.NET Core 3


34

今朝から、プロジェクトのコードを変更せずに、非常にシンプルなWeb API、1つのコントローラー、3つのメソッド、Swaggerを使用すると、起動しなくなり、エラーが発生します。

HTTPエラー500.35-同じプロセス内のANCM複数のインプロセスアプリケーション

イベントビューアは、最も役に立たないメッセージを報告します。

IIS Express AspNetCoreモジュールV2:アプリケーション '/ LM / W3SVC / 2 / ROOT / docs'の開始に失敗しました、エラーコード '0x80004005'。

システムを数回再起動した。

私はVisual Studio 2019を使用していますが、アプリケーションは正常にコンパイルされ、数分前に問題なく動作しました。新しいソフトウェアはインストールされておらず、パッケージは追加されていません。クリーンとリビルドも試みました。

メソッドのコメントを変更しました。もちろん、以前のコメントも復元しようとしましたが、常に同じメッセージが表示されます。

私に何ができる?

ネットコアはまだ不安定すぎて専門的に使用できませんか?

更新

同じバージョンのVisual Studioから起動された同じコードが別のPCで正しく実行されます。

アップデート2

アプリケーションのコードの下:

startup.cs

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Hosting;
using Microsoft.OpenApi.Models;
using System;
using System.IO;
using System.Reflection;

namespace WFP_GeoAPIs
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {

            services.AddControllers(); 
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo() { Title = "Geographic APIs", Version = "v1.0.0" });
                var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.XML";
                var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);    
                c.IncludeXmlComments(xmlPath);
            });
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseStaticFiles(new StaticFileOptions
            {
                FileProvider = new PhysicalFileProvider(
                 Path.Combine(Directory.GetCurrentDirectory(), "swagger-ui")),
                RequestPath = "/swagger-ui"
            });

            app.UseHttpsRedirection();
            app.UseRouting();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });

            app.UseSwagger();    
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "GeoAPIs Ver 1.0.0");
                c.RoutePrefix = "docs";
                c.InjectStylesheet("/swagger-ui/custom.css");
            });
        }
    }
}

launchsettings.jsonは次のとおりです。

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false, 
    "anonymousAuthentication": true, 
    "iisExpress": {
      "applicationUrl": "http://localhost:51319",
      "sslPort": 44345
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "docs",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "WFP_GeoAPIs": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "docs",
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

しかし、同じVisual Studioバージョンを持つ別のPCでプロジェクトをコピーすると問題なく機能するため、.NET CoreまたはVIsual Studioプロパティの構成バグのようです...


1
.NET Coreは、Microsoftを含む多くの開発者によって本番環境で使用されています。完全に安定しています。問題はあなたの側にあります。しかし、ここではあなたを助けるのに十分ではありません。ドキュメントのトラブルシューティングガイドを確認してください。
Chris Pratt、

同じエラーが発生します。web.configを使用していますか?
Marcel

@Marcelいいえ、使用していません
Giox

1
私はそうします、私はweb.configでAspNetCoreModuleV2をAspNetCoreModuleに変更することによって私の鉱山を修正しました。
Marcel

2
VS / IIS Expressが使用する実際の構成ファイルを確認して、2つの.NET Coreアプリが誤って同じプールに移動するかどうかを確認する必要があります。インプロセスモデルはそれをサポートできません。
Lex Li

回答:


50

現在、VS2019のバグです-(2019年11月4日)

1.)ソリューションを閉じます

2.)削除applicationhost.configフォルダ内.vs または全部削除.vsフォルダを

.vsフォルダは、通常、あなたのソリューションファイルの隣にあります。

ここに画像の説明を入力してください

3.)ソリューションを再起動します


おかげで、これはapplicationhost.configに注ぐ手間を省きます。
CINCHAPPS

1
私のために修正しました。これにより多くの同様の問題が修正されるようです...
Rob L

これは私のために働いたものです。ここでもデバッグ中に問題が発生しました。
Abi P

1
私のヒーロー!これは私を何日も悩ませてきました!
Godrules500

これは間違いなく動作します:)
Amit Philips

28

@Lex Liのおかげで、彼は私に解決策を与えてくれました。

この問題はapplicationhost.configにありました。これは、Webアプリケーションを実行するためにVisual StudioがIISExpressを起動するためのすべての設定を含むメタベースファイルです。

Visual Studio 2019の場合、このファイルは次の場所にあります

$(solutionDir)\.vs\{projectName}\config\applicationhost.config

他のバージョンについては、この投稿を確認してください。IISExpress構成/メタベースファイルはどこにありますか?

セクションの下に私は次のとおりでした:

<sites>    
  <site name="WebSite1" id="1" serverAutoStart="true">
    <application path="/">
      <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
    </application>
    <bindings>
      <binding protocol="http" bindingInformation=":8080:localhost" />
    </bindings>
  </site>

  <site name="MyProjectName" id="2">
    <application path="/" applicationPool="MyProjectName AppPool">
      <virtualDirectory path="/" physicalPath="E:\Projects\MyProjectName" />
    </application>

   <application path="/docs" applicationPool="docs AppPool">
      <virtualDirectory path="/" physicalPath="E:\Projects\MyProjectName" />
    </application>

    <bindings>
      <binding protocol="http" bindingInformation="*:59386:localhost" />
      <binding protocol="https" bindingInformation="*:44345:localhost" />
    </bindings>
  </site>
  <siteDefaults>
    <!-- To enable logging, please change the below attribute "enabled" to "true" -->
    <logFile logFormat="W3C" directory="%AppData%\Microsoft\IISExpressLogs" enabled="false" />
    <traceFailedRequestsLogging directory="%AppData%\Microsoft" enabled="false" maxLogFileSizeKB="1024" />
  </siteDefaults>
  <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
  <virtualDirectoryDefaults allowSubDirConfig="true" />
</sites>

によって定義されたいくつかの奇妙な設定があるところ

<application path="/docs" applicationPool="docs AppPool">
   <virtualDirectory path="/" physicalPath="E:\Projects\MyProjectName" />
</application> 

これは、/ docsパスを開始フォルダとして設定しようとしたときに確かに追加されました。

この設定と、このパスに関連するファイルの最後にある別の設定をコメント化すると、問題が解決します。


5
あなたは命の恩人です!+1プロジェクトの.vsフォルダを削除しましたが、現在は機能しています(ソリューションとプロジェクトの両方のフォルダ)。おかげで
tscissors

1
同じ問題があり、これで修正されましたが、launchSettings.jsonのiisExpressで「applicationUrl」プロパティを変更すると、2番目のエントリがVSによって自動的に追加されたことがわかりました。なぜこれが起こるのかわからない。
リッチー

@Richie VSのバグのようです。URLを変更しても古いアプリは削除されません。アプリがインプロセスで実行されたときに削除されるはずです。ここにレポートがあります:developercommunity.visualstudio.com/content/problem/699245/…。低優先度として閉じられていないか確認してみましょう。
andre_ss6

18

以下を実行したときにも同じエラーが発生しました。

  1. 2つの別個のasp.netコアWebサイトを公開
  2. IISでは、「Default Web Site」の下に2つのWebサイトを作成し、それぞれに(1)の各発行フォルダーへの物理パスを設定しました。
  3. ここで、最初に開いたサイトはどれでも機能し、2番目のサイトではそのエラーが発生します。

問題:

私のサイトは両方とも「Default Web Site」の下にあるため、どちらもDefaultAppPoolを使用しています。これがこのエラーの原因です。サイトが[既定のWebサイト]にないが同じアプリプールを使用している場合にも、同じエラーが発生します。

解決:

ドキュメントで述べたように、

このエラーを修正するには、別のIISアプリケーションプールでアプリを実行します。

私にとってこの問題は、サイトごとに個別のアプリプールを使い始めたときに解決されました。


2
他の人ではなく、うまくいきました。ありがとう。
エルドアン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.