2017-12-27 23 views
0

iis expressとdefault iisの両方でlocalhost上に.net core web apiアプリケーションがあります。私のWebサーバーでは、Asp.Net v4.0アプリケーションの下にサブアプリケーションとしてアプリケーションをホストしたいと思っています。私は、サブアプリケーションを作成し、私のコアアプリケーションを展開し、no managedアプリケーションプールを作成し、私の純粋なコアのサブアプリケーションのためのこのアプリケーションプールを選択しました。私はバンドルと.netコア2.0 SDKをホストしている.netコア2.0ウィンドウを完全にインストールしました。私は、APIからエンドポイントを呼び出すときiis上のコアコア2.0アプリケーションをホストすると内部サーバエラーが発生する

のWeb.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" /> 
    </handlers> 
    <aspNetCore processPath="dotnet" arguments=".\MyApp.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" /> 
    </system.webServer> 
</configuration> 

StartUpクラスのConfigure方法

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory logger) 
{ 
    logger.AddFile(Configuration.GetValue<string>("LogPath")); 
    app.UseDeveloperExceptionPage(); 
    app.UseDatabaseErrorPage(); 
    // Enable middleware to serve generated Swagger as a JSON endpoint. 
    app.UseSwagger(); 

    // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.), specifying the Swagger JSON endpoint. 
    app.UseSwaggerUI(c => 
    { 
     c.SwaggerEndpoint("/swagger/v1/swagger.json", "MyAppV1"); 
    }); 


    app.UseMvc(); 
    //app.UseMiddleware<LoggingMiddleWare>(); 
} 

Program.csの

public static IWebHost BuildWebHost(string[] args) => 
      WebHost.CreateDefaultBuilder(args) 
       .UseIISIntegration() 
       .UseStartup<Startup>() 
       .Build(); 

だから、それは500内部サーバーを返します。エラー。

私のstdoutlogが有効になっているにもかかわらず、作成されているログファイルがなく、適切なイベントログも表示されません。

+0

https://docs.microsoft.com/en-us/aspnet/core/publishing/iisのIIS構成、トラブルシューティングのヒント、よくあるエラーのセクションを確認しましたか? –

+0

@MartinUllrichこのドキュメントでは、ネットのコアアプリケーションを.net 4.0アプリケーションプールの下位アプリケーションとしてホスティングすることに関する情報は非常に限られていますが、この情報は[ここ](https://docs.microsoft.com)です。 com/en-us/aspnet/core/publishing/iis?tabs = aspnetcore2x#サブアプリケーションの設定)、ロギング設定を表示するだけで、実行可能なものか、私のエラー。 – ibubi

答えて

2

あなたの質問に確実に答えるには、実際には十分ではありませんが、ASP.NET 4アプリケーションの下で仮想アプリケーションとしてホストしているという事実に基づいて、最も可能性の高い原因はWeb.configです。 Web.configファイルはアプリケーションによって継承されます。その結果、メインアプリケーション(ASP.NET 4)のWeb.configには、サブアプリケーション(ASP.NET Coreアプリケーション)Web.configでは明示的に定義されていないものがすべて乗ってくるので、かなりの可能性がありますそこにはASP.NET Coreアプリケーションと互換性がないビットがあります。

これを防ぐ実際の唯一の方法は、メインアプリのWeb.configを編集して、ほとんどすべての設定セクションにinheritInChildApplications="false"を明示的に追加することです。これは、各セクションごとに個別に実行する必要があります。継承を無効にするグローバルな方法はありません。

誰かが親のWeb.configを何かで変更したり、新しいセクションにこの属性を追加することを忘れてしまうという保証はありませんので、これも非常に脆弱な解決策です。一般に、ASP.NETアプリケーションをネストするのは悪い考えです。そして、ASP.NET Coreアプリケーションをネストするのはさらに悪い考えです。私は単にそれ自身のサイトを与え、サブドメインをホストすることを提案する。あなたはそれほど問題が少ないでしょう。

+0

私は私の机に戻ってあなたの両方の提案を試みます。 – ibubi

関連する問題