У меня работает 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.