.net core api, нацеленный на .net framework на сервере 2008 r2 IIS7 ANCM Out-of-Process ошибка - PullRequest
0 голосов
/ 26 июня 2019

У меня работает API на .net core 2.2 с таргетингом на .net framework 4.6.2.Он работает на сервере 2008 R2 с IIS 7. Я установил хостинг для 2.2.5, .net framework 4.7.2 и C ++ 2017 (у меня также был установлен C ++ 2015).Приложение будет работать на моем локально установленном IIS (машина для разработки Win 10), но когда я развертываю и пытаюсь запустить приложение с помощью Postman, я получаю ошибку 500 ANCM Out-Of-Process.Я также загрузил на сервер супер базовое готовое веб-приложение .netcore и получил те же результаты.

Приложение работает, когда я запускаю его из локальной установки IIS (рабочая станция Dev 10)

Я пытался восстановить, удалить и переустановить все связанные фреймворки.Я переключил свой код с 64-разрядного на 32-разрядный.Я удалил несущественные аспекты моего кода (авторизация сервера идентификации 4).

Вот мой .csproj:

 <Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup Label="Globals">
    <SccProjectName>SAK</SccProjectName>
    <SccProvider>SAK</SccProvider>
    <SccAuxPath>SAK</SccAuxPath>
    <SccLocalPath>SAK</SccLocalPath>
  </PropertyGroup>

  <PropertyGroup>
    <TargetFramework>net462</TargetFramework>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <RuntimeIdentifiers>win7-x86</RuntimeIdentifiers>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <PlatformTarget>x86</PlatformTarget>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>

  <ItemGroup>
    <None Remove="ActiveDirectoryAPI.csproj.vspscc" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="AntiXSS" Version="4.3.0" />
    <PackageReference Include="EntityFramework" Version="6.2.0" />
    <PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.HttpsPolicy" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" />
    <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.2.0" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.1" />
    <PackageReference Include="Serilog" Version="2.8.0" />
    <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" />
    <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
    <PackageReference Include="Serilog.Sinks.File" Version="4.0.0" />
    <PackageReference Include="System.DirectoryServices" Version="4.5.0" />
    <PackageReference Include="System.DirectoryServices.AccountManagement" Version="4.5.0" />
  </ItemGroup>

  <ItemGroup>
    <Reference Include="ESA.WebTeam.AuthorizationManager.Data">
      <HintPath>..\References\ESA.WebTeam.AuthorizationManager.Data.dll</HintPath>
    </Reference>
    <Reference Include="ESA.WebTeam.AuthorizationManager.Model">
      <HintPath>..\References\ESA.WebTeam.AuthorizationManager.Model.dll</HintPath>
    </Reference>
  </ItemGroup>

</Project>

Вот мой program.cs ("#remote server location #" isбуквально не то, что написано, одной из ранних проблем, с которыми я столкнулся, было то, что IIS не мог найти файлы приложения, так что он содержал местоположение публикации, я уверен, что есть лучший способ сделать это, но я думаю, что я могу решить это позже):

 public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseKestrel()
                .UseStartup<Startup>()
                .UseIISIntegration()
                .UseContentRoot("#remote server location#");
    }

Вот мой web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath=".\ActiveDirectoryAPI.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">
        <environmentVariables />
      </aspNetCore>
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: 466df6a6-c3b8-4f13-ab7a-3b35e39075c2-->

Поскольку используется Identity Authorization, но сервер Identity еще не опубликован (это также ядро ​​.net, поэтомуне сработает), я ожидаю получить 401 несанкционированный - это то, что я получаю на своем локальном экземпляре IIS.

...