2016-05-16 3 views
1

Были ли у вас проблемы с этим, у меня есть стандартный .NET Core API, который я хочу разместить на удаленном сервере IIS, проблема в большинстве Учебники предназначены для ASP.NET 5/vNext и не объясняют, что происходит после запуска вашего dotnet publish. Мои привязки верны, но я не уверен, что я указываю на правильную папку.Невозможно развернуть приложение ASP.NET Core для IIS - Bad Gateway

В моей папке вывода У меня есть публиковать и Wwwroot, а также config.json и некоторые другие JSon файлы. Когда я указываю IIS на Wwwroot папку я получаю:

502 - веб-сервер получил недопустимый ответ, действуя в качестве шлюза или прокси-сервера.

Я получаю 404s, если попытаюсь указать его на любую другую папку. У меня установлен HttpPlatformHandler 1.2. Мой project.json выглядит следующим образом:

{ 
    "compilationOptions": { 
    "debugType": "portable", 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true 
    }, 

    "publishOptions": { 
    "include": [ 
     "wwwroot" 
    ] 
    }, 

    "dependencies": { 
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0-*", 
    "Microsoft.AspNetCore.Authentication.JwtBearer": "1.0.0-*", 
    "Microsoft.AspNetCore.Diagnostics": "1.0.0-*", 
    "Microsoft.AspNetCore.Hosting": "1.0.0-*", 
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0-*", 
    "Microsoft.AspNetCore.IISPlatformHandler": "1.0.0-*", 
    "Microsoft.AspNetCore.Mvc": "1.0.0-*", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0-*", 
    "Microsoft.AspNetCore.StaticFiles": "1.0.0-*", 
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0-*", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0-*", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-*", 
    "Microsoft.Extensions.Logging.Console": "1.0.0-*", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0-*", 
    "OpenIddict.Core": "1.0.0-*", 
    "OpenIddict.EF": "1.0.0-*", 
    "Microsoft.NETCore.App": { 
     "type": "platform", 
     "version": "1.0.0-rc2-3002700" 
    } 
    }, 

    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
     "portable-net45+wp80+win8+wpa81+dnxcore50", 
     "portable-net451+win8" 
     ] 
    } 
    }, 

    "tools": { 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": { 
     "version": "1.0.0-*", 
     "imports": "portable-net45+wp80+win8+wpa81+dnxcore50" 
    } 
    }, 

    "scripts": { 
    "postpublish": "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" 
    }, 

    "content": [ 
    "wwwroot", 
    "config.json", 
    "web.config" 
    ], 

    "exclude": [ 
    "wwwroot", 
    "node_modules" 
    ], 

    "publishExclude": [ 
    "**.user", 
    "**.vspscc" 
    ] 
} 

Я взял элементы this sample для моего project.json.

+0

см. Ссылку https://github.com/dotnet/cli/issues/2135 –

ответ

1

Ваш физический путь в IIS должен указывать на папку wwwroot из вашего опубликованного вывода.

enter image description here

Папка approot также должен быть помещен в той же директории, что и папка Wwwroot.

Я нашел полезным попробовать запустить web.cmd в соответствующей папке и посмотреть, начнется ли она. Легче видеть исключения запуска (если они есть) при запуске web.cmd. Вы также можете изменить флаг stdoutLogEnabled в файле wwwroot/web.config на true, чтобы получить какие-либо ошибки при запуске из IIS.

Наконец-то, по крайней мере, однажды, после того, как я попытался заставить его работать на стене, я перезагрузил свой сервер IIS и внезапно работал правильно. Очевидно, последнее средство, если это prod-сервер

+0

к счастью, это наш промежуточный сервер! Моя проблема в том, что когда я публикую, нет соответствующей папки, это действительно запутанная структура, я постараюсь опубликовать картинку, если это поможет –

+0

вам определенно нужна папка соответствующего. вот где весь код живет. Я публикую свое приложение из Visual Studio, и он выводит как папку wwwroot, так и папку-помощник, поэтому проблема связана с тем, как вы публикуете. Пожалуйста, разместите фотографию своего выходного каталога. –

+0

@TrevorWard, папка-помощник в проекте RC2? Ваш ответ может быть для RC1? –

7

Я указал IIS на корневую папку на папку приложения, а не на wwwroot, и это сработало.

Сервер IIS должен иметь DotNetCore.1.0.0.RC2-WindowsHosting.exe

+2

И для RTM для .NET Framework 1.0, ссылка: https://go.microsoft.com/fwlink/?LinkId=817246 –

+0

@StefanIancu большое вам спасибо, вы спасли мою жизнь :) –

0

сталкиваюсь такая же проблема на Windows, 2012 Server R2 при развертывании сайта на IIS; плохой шлюз. Да, я использовал .Net Core 2.0. В IIS у меня был пул приложений «No Managed Code»; Управляемый трубопровод «Интегрированный» и по-прежнему имел ту же проблему. Решение было установлено DotNetCore.2.0.0-WindowsHosting.exe на сервере и успехов :)

Смежные вопросы