2017-12-27 33 views
0

localhost에서 iis express 및 default iis에서 잘 작동하는 .net 코어 웹 API 응용 프로그램이 있습니다. 내 웹 서버에서 Asp.Net v4.0 응용 프로그램에서 하위 응용 프로그램으로 내 응용 프로그램을 호스팅하려고합니다. 하위 응용 프로그램을 만들고 핵심 응용 프로그램을 배포 한 다음 no managed 응용 프로그램 풀을 만들고이 응용 프로그램 풀을 내 net 핵심 하위 응용 프로그램에 선택했습니다. 나는 번들과 닷넷 코어 2.0 SDK를 호스팅하는 닷넷 코어 2.0 윈도우를 완전히 설치했다.iis의 net core 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 클래스 '나는 API에서 엔드 포인트를 호출 할 때

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 내부 서버를 반환 Configure 방법 오류.

내 stdoutlog가 활성화되어 있어도 로그 파일이 생성되지 않으며 적절한 이벤트 로그도 볼 수 없습니다.

+0

https://docs.microsoft.com/en-us/aspnet/core/publishing/iis의 IIS 구성, 문제 해결 팁 및 일반적인 오류 섹션을 검토 했습니까? –

+0

@MartinUllrich이 문서가 말한대로했는데 .net 4.0 응용 프로그램 풀에서 하위 응용 프로그램으로 .net 핵심 응용 프로그램을 호스팅하는 것에 대한 정보가 매우 제한되어 있습니다.이 정보는 [여기] (https://docs.microsoft.com)에 있습니다. co.kr/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 app) Web.config에서 명시 적으로 다르게 정의되지 않은 모든 것이 타기를 위해 제공되며, 거기에 ASP.NET 핵심 애플 리케이션과 호환되지 않는 비트.

이 문제를 방지하는 유일한 방법은 기본 앱의 Web.config를 편집하고 거의 모든 설정 섹션에 inheritInChildApplications="false"을 명시 적으로 추가하는 것입니다. 이 작업은 각 섹션마다 개별적으로 수행해야합니다. 상속을 금지하는 전역 적 방법은 없습니다.

누군가가 부모 Web.config를 수정하지 않을 것이고이 속성을 새 섹션에도 추가하는 것을 잊지 않으므로이 또한 매우 취약한 솔루션입니다. 일반적으로 ASP.NET 응용 프로그램을 중첩하는 것은 좋지 않습니다. ASP.NET Core 응용 프로그램을 중첩하는 것은 훨씬 나쁜 생각입니다. 나는 단순히 자체 사이트를 제공하고 하위 도메인에 호스팅하는 것이 좋습니다. 그렇게 적은 이슈가있을 것입니다.

+0

나는 내 책상으로 돌아가서 두 가지 제안을 시도 할 것입니다. – ibubi