Маршрутизация ASP.NET Core 1.1 в Azure - PullRequest
0 голосов
/ 16 мая 2018

Приложение (web api) отлично работает локально.но в запросе Azure (Служба приложений), например http://myapp.azurewebsites.net/api/values, возвращается ошибка 404 (Требуемый ресурс удален, изменилось его имя или временно недоступен.) Маршрутизация ищет физический путь D: \ home\ site \ wwwroot \ api \ значения, которые не существуют.

в program.cs:

var host = new WebHostBuilder()
            .UseKestrel()
            .UseUrls("http://myapp.azurewebsites.net")
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

        host.Run();

в файле startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddMvcCore(opts =>
         {
              opts.ModelBinderProviders.Insert(0, new CommaDelimitedArrayModelBinderProvider());
          });
    ...
}

web.config:

<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="flase" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
  </system.webServer>
</configuration>

обновление: error details

обновление 2: код дополнительной ошибки равен 0 (SC-подсостояние).sc-win32-status равен 2 (файл не найден).Я также включил все журналы, просмотрел их и не нашел никаких дополнительных советов.Консоль удаленного выполнения Kudu вообще не показала ошибок и доказательств запроса.iis error

обновление 3: короткая версия API https://drive.google.com/open?id=1TUCImJSmuCC1HJK-x95wg5VOUUEB96wZ

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Я добавляю пользовательскую привязку модели DateTime в Core Web API , и она привязывает пользовательские форматы DateTime в API.Я хорошо работаю как на местном, так и на лазурном.

Вы можете перейти по этой ссылке , чтобы проверить.И используйте эту ссылку для форматирования даты и времени.enter image description here

Как сказал @Ajay, вы можете включить журнал диагностики на портале Azure.

Кроме того, вы можете удалить все файлы в вашем KUDU , чтобы позволить веб-приложению перезаписывать в него файлы.

Или, когда вы публикуете приложение, нажмите "Удалите дополнительные файлы в месте назначения", чтобы избежать внесения некоторых изменений, но они не будут переопределены.enter image description here

0 голосов
/ 06 июня 2018

Проект был создан в vs2015, а затем перенесен в vs2017. Очевидно, что не все необходимые изменения были внесены в csproj-файл. После переписывания его с нуля проблема была решена. Я также перешел на .net 2.0. Финальная версия csproj:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <RootNamespace>ClearIt.Api</RootNamespace>
    <ApplicationIcon />
    <OutputType>Exe</OutputType>
    <StartupObject />
  </PropertyGroup>
  <ItemGroup>
    <ProjectReference Include="..\Dal\Dal.csproj" />
    <ProjectReference Include="..\Models\Models.csproj" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
    <PackageReference Include="AutoMapper" Version="6.0.2" />
    <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="2.0.1" />
    <PackageReference Include="HtmlAgilityPack" Version="1.8.1" />
    <PackageReference Include="IdentityServer4.AccessTokenValidation" Version="2.0.0" />
    <PackageReference Include="Joonasw.AspNetCore.SecurityHeaders" Version="2.4.0" />
    <PackageReference Include="Microsoft.AspNetCore.Cors" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.0" />
    <PackageReference Include="SkiaSharp" Version="1.59.1" />
    <PackageReference Include="System.Text.Encoding.CodePages" Version="4.4.0" />
  </ItemGroup>
  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
  </ItemGroup>
  <ItemGroup>
    <None Update="appsettings.Development.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="appsettings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="appsettings.Production.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="Settings.job">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
    <None Update="web.config">
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>
0 голосов
/ 17 мая 2018

404 ошибка имеет много кода суб-состояния, чтобы сузить поиск кода суб-состояния, вы можете просмотреть журналы отслеживания Failed Request.

Убедитесь, что файлы развертывания доступны в папке wwwroot.Поместите файл web.config в каталог / site / wwwroot.

По умолчанию в веб-приложениях Azure все файлы хранятся в файловой системе вместе с приложением, включая файлы мультимедиа.Обратитесь к статье Структура файла в Azure - https://github.com/projectkudu/kudu/wiki/File-structure-on-azure, чтобы узнать наборы файлов и каталогов в Azure WebApp.

Чтобы включить диагностику на портале Azure, перейдите на страницу своего веб-приложения и нажмите Настройки> Журналы диагностики.

Кроме того, многие ошибки запуска не дают полезной информации в событии приложения.Журнал.Вы можете запустить приложение в консоли Kudu Remote Execution Console, чтобы обнаружить ошибку: Проверьте шаги, упомянутые в этом документе: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/azure-apps/troubleshoot?view=aspnetcore-2.0#run-the-app-in-the-kudu-console

Ссылка: https://docs.microsoft.com/en-us/azure/app-service/web-sites-enable-diagnostic-log

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...