2016-08-29 5 views
4

У меня есть приложение ASP.NET Core, которое работает нормально локально.Приложение ASP.NET Core не работает после публикации в Azure

Однако, когда я опубликовать (Web Deploy) сайт в Azure, я получаю : You do not have permission to view this directory or page.

У меня есть контроллер по умолчанию и маршрут, определенный в Startup.cs:

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

Структура папки после того, как веб-развертывания на Azure выглядит следующим образом:

|_ home 
    |_ site 
    |_ wwwroot (contains DLL's and files specified through 'publishOptions' in project.json) 
     |_ wwwroot (the contents of the 'wwwroot' folder I have in Visual Studio) 
     |_ Views (contains MVC views) 
     |_ refs (contains referenced DLLs, I think?) 

Любая идея о том, что я следует искать в project.json или портале Kudu, чтобы выяснить, что не так?

Мой project.json файл:

{ 
    "title": "My Web App", 
    "version": "1.0.0-*", 
    "buildOptions": { 
    "debugType": "portable", 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true, 
    "compile": { 
     "exclude": [ "bin/**", "obj/**", "node_modules/" ] 
    } 
    }, 
    "publishOptions": { 
    "include": [ "wwwroot", "Views", "appsettings.json", "appsettings.*.json" ] 
    }, 
    "scripts": { 
    "prepublish": [ "jspm install", "gulp build" ] 
    }, 
    "dependencies": { 
    "Microsoft.ApplicationInsights.AspNetCore": "1.0.0", 
    "Microsoft.AspNetCore.Diagnostics": "1.0.0", 
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0", 
    "Microsoft.AspNetCore.Mvc": "1.0.0", 
    "Microsoft.AspNetCore.StaticFiles": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0", 
    "System.IO.FileSystem": "4.0.1" 
    }, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "dependencies": { 
     "Microsoft.NETCore.App": { 
      "type": "platform", 
      "version": "1.0.0" 
     }, 
     "Microsoft.AspNetCore.Server.Kestrel": "1.0.0" 
     }, 
     "imports": "dnxcore50" 
    } 
    }, 
    "commands": { 
    "web": "Microsoft.AspNet.Server.Kestrel --server.urls=http://*:8000/" 
    } 
} 

Edit:

С одной стороны, я пропускал NuGet пакет Microsoft.AspNetCore.Server.IISIntegration. Когда я добавил его, я также получил файл web.config в корне сайта (который я включил через project.json).

Я также добавил .UseIISIntegration() к моему WebHostBuilder в Startup.cs:

public static void Main(string[] args) 
{ 
    new WebHostBuilder() 
     .UseKestrel() 
     .UseContentRoot(Directory.GetCurrentDirectory()) 
     .UseStartup<Startup>() 
     .UseIISIntegration() // This was missing 
     .Build() 
     .Run(); 
    } 

теперь я могу запустить его на IIS Express локально (хотя я предполагаю, что это IIS противостоя Kestrel?), Но при публикации в лазури я получаю сообщение об ошибке: HTTP Error 502.5 - Process Failure

журнал событий в лазури гласит: Failed to start process with commandline '"%LAUNCHER_PATH%" %LAUNCHER_ARGS%', ErrorCode = '0x80070002'.

Согласно документации, шаг поиска неисправностей:

If the server does not have Internet access while installing the server hosting bundle, this exception will ensue when the installer is prevented from obtaining the Microsoft Visual C++ 2015 Redistributable (x64) packages online. You may obtain an installer for the packages from the Microsoft Download Center.

Не уверен, как это относится к Azure, правда?

+0

Какую версию dotnet вы используете? Кроме того, какие пакеты у вас есть в project.json? –

+0

Я добавил файл project.json с RTM Core 1.0. –

+0

@TedNyberg Вероятно, проблема возникает из-за отсутствия web.config в 'publishOptions'. Попробуйте добавить web.config, например '[" wwwroot "," Views "," appsettings.json "," appsettings. *. Json "," web.config "]'. –

ответ

3

Проблема возникла из-за недостаточной интеграции/конфигурации IIS.

я должен был добавить следующее project.json:

"tools": { 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" 
    } 

Я также добавил сценарий postPublish для публикации IIS:

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

Я также добавил Microsoft.AspNetCore.Server.IISIntegration NuGet:

"dependencies": { 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0" 
} 

Это создало веб-сайт .конфиг файл, который я должен был изменить как:

<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" /> 
    </handlers> 
    <aspNetCore processPath=".\My.Web.App.dll" arguments="" forwardWindowsAuthToken="false" stdoutLogEnabled="true" stdoutLogFile="\\?\%home%\LogFiles\stdout" /> 
    </system.webServer> 
</configuration> 

Наконец я добавил UseIISIntegration к моему WebHostBuilder:

public static void Main(string[] args) 
{ 
    new WebHostBuilder() 
     .UseKestrel() 
     .UseContentRoot(Directory.GetCurrentDirectory()) 
     .UseStartup<Startup>() 
     .UseIISIntegration() // This was missing 
     .Build() 
     .Run(); 
    } 

Стандартный Publish (Web Deploy) из Visual Studio и сайт начал просто отлично на Azure (хотя в моем случае мне также пришлось добавить prepublish скрипт для некоторых задач Gulp).

+1

У меня такая же точная проблема сегодня утром, и все эти изменения в моем проекте. Единственное различие заключается в том, что я развертываю через VSTS. Какие-нибудь идеи? Получение того же сообщения об ошибке - '403: у вас нет разрешения на просмотр этого каталога или страницы'. – steamrolla

+1

Для меня единственным изменением было обновление web.config: '' –

+0

Не могли бы вы опубликовать структуру папок на Azure после ее развертывания? У меня такая же проблема, и я задаюсь вопросом, что-то не так с моим пакетом nuget. – CanardMoussant

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

  • Нет связанных вопросов^_^