Laden...

C# Projekt unter IIS zum Laufen bringen

Erstellt von Bronstein vor einem Jahr Letzter Beitrag vor einem Jahr 969 Views
B
Bronstein Themenstarter:in
27 Beiträge seit 2022
vor einem Jahr
C# Projekt unter IIS zum Laufen bringen

Hallo zusammen,
versuche nun seit Tagen mein Projekt unter einem IIS Server unter Windows Server 2019 zum laufen zu bringen.

Als Zielframwork habe ich im Visual Studio .net Core 3.1 eingestellt

Da ich eine 32Bit DLL verwende habe ich im IIS Application Pool 32bit auf true gesetzt

Unter Visual Studio mit dem IIS Express läuft es, wenn ich es jetzt aber veröffentliche und auf dem Server starten möchte bekomme ich folgende Meldung im Browser:> Fehlermeldung:

HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure

Im Logfile sehe ich folgende Meldung:> Fehlermeldung:

Unhandled exception. System.BadImageFormatException: Could not load file or assembly 'C:\inetpub\Test_Services\test.dll'. An attempt was made to load a program with an incorrect format.
File name: 'C:\inetpub\Test_Services\test.dll'

Meine csproject Datei sieht folgendermaßen aus:



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

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
    <Platforms>AnyCPU;x86</Platforms>
    <UserSecretsId>f3492274-f87e-402b-ad37-821f94564fcd</UserSecretsId>
    <StartupObject>test.Program</StartupObject>
  </PropertyGroup>

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

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

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x86'">
    <Prefer32Bit>true</Prefer32Bit>
	<PlatformTarget>x86</PlatformTarget>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Cors" /> 
    <!-- <PackageReference Include="Microsoft.AspNetCore.All" Version="3.1.27" /> -->
    <PackageReference Include="System.Private.ServiceModel" Version="4.9.0" />
    <PackageReference Include="System.ServiceModel.Duplex" Version="4.9.0" />
    <PackageReference Include="System.ServiceModel.Http" Version="4.9.0" />
    <PackageReference Include="System.ServiceModel.NetTcp" Version="4.9.0" />
    <PackageReference Include="System.ServiceModel.Security" Version="4.9.0" />
  </ItemGroup>

  <ItemGroup>
    <WCFMetadata Include="Connected Services" />
  </ItemGroup>

  <ProjectExtensions><VisualStudio><UserProperties properties_4launchsettings_1json__JsonSchema="" /></VisualStudio></ProjectExtensions>


</Project>


Meine Web.config:


<?xml version="1.0" encoding="utf-8"?>
<configuration>
	<system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\test.dll" stdoutLogEnabled="true"
        stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
  </system.webServer>
	<!--<system.webServer>
		<aspNetCore processPath="dotnet" arguments=".\test.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess">
			<handlers>
				<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified"/>
			</handlers>
			<handlerSettings>
				<handlerSetting name="stackSize" value="2097152"/>
			</handlerSettings>
		</aspNetCore>
	</system.webServer>-->
	<!-- <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\test.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
    </system.webServer>
  </location> -->
	<system.serviceModel>
		<bindings>
			<wsHttpBinding>
				<binding openTimeout="00:10:00" closeTimeout="00:10:00" sendTimeout="00:10:00" receiveTimeout="00:10:00"/>
			</wsHttpBinding>
		</bindings>
	</system.serviceModel>
	<system.net>
		<!-- erstmal herausnhemen zum test<defaultProxy>
      <proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://127.0.0.1:8888" usesystemdefault="false" />
    </defaultProxy> -->
	</system.net>
</configuration>

Auf dem Sever sind folgende .net Versionen installiert:


dotnet --list-runtimes
Microsoft.AspNetCore.App 3.1.27 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.27 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.27 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 6.0.7 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

6.911 Beiträge seit 2009
vor einem Jahr

Hallo Bronstein,

Da ich eine 32Bit DLL verwende habe ich im IIS Application Pool 32bit auf true gesetzt
...> Fehlermeldung:
HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure

Das ASP.NET Core Hosting Bundle, in dem das ASP.NET Core Module (ANCM) enthalten ist, muss auch als 32bit-Variante vorhanden / installiert werden.

Ich tippe mal dass du die 64bit-Variante installiert hast, denn darauf deuten die Fehlermeldungen hin.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

B
Bronstein Themenstarter:in
27 Beiträge seit 2022
vor einem Jahr

Hallo,
das hat leider nichts gebracht, habe jetzt unter folgendem Link:
https://dotnet.microsoft.com/en-us/download/dotnet/3.1

Die 4 Dinge installiert in der 32bit Version:

  • SDK 3.1.421
  • ASP.NET Core Runtime 3.1.27
  • .NET Desktop Runtime 3.1.27
  • .NET Runtime 3.1.27

Im Anhang auch ein Bild was alles .net auf dem Server installiert ist, fehlt da noch was?

6.911 Beiträge seit 2009
vor einem Jahr

Hallo Bronstein,

hast du auch das Hosting Bundle (x86) installiert?
Sehe das nicht im Screenshot. Ohne dem, wegen ASP.NET Core Module v2, kann der IIS nicht mit ASP.NET Core kommunizieren.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

B
Bronstein Themenstarter:in
27 Beiträge seit 2022
vor einem Jahr

Hallo,
ja denke schon zumindest wenn ich es erneut installieren möchte kommt die Meldung ob ich reparieren möchte

Im Anhang auch mal was alles unter 64 und 32 Bit installiert ist:

Denke von der Installation sollte es passen oder fehlt da noch was?

6.911 Beiträge seit 2009
vor einem Jahr

Hallo Bronstein,

was mich wunder -- bei der Fehlermeldung -- warum Out-Of-Process steht, da ist nirgends konfiguriert (od. ist das der Standard, weiß ich nicht).
In der Projektdatei (csproj) und der web.config sollten die HostingModels ident sein.

D.h. entweder


<!-- csproj --> 
<PropertyGroup>
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>

<!-- web.config -->
<aspNetCore processPath ="dotnet"
            arguments   =".\test.dll"
            hostingModel="outofprocess">
<!-- ... ->

oder


<!-- csproj --> 
<PropertyGroup>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>

<!-- web.config -->
<aspNetCore processPath ="dotnet"
            arguments   =".\test.dll"
            hostingModel="inprocess">
<!-- ... ->

Probier dies einmal explizit zu setzen und schau dir die Fehlermeldung -- die hoffentlich nicht mehr kommt 😉 -- genau an.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

16.807 Beiträge seit 2008
vor einem Jahr

HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure kann prinzipiell durch vieles ausgelöst werden

  • falsches Runtime Deployment (deswegen ist die Best Practise Self-Contained Deployments zu nutzen)
  • veraltete / inkompatible NuGet Pakete
  • die App hat einen definierten Port, der bereits in-use ist
  • fehlendes Hosting Bundle
  • ungültige App Settings (zB Syntax-Fehler im Json)
  • Fehler im Bootstrap der Anwendung (zB. ausgelöst durch WebHost (zB. ungültiger Logpfad/Port/Setting.. wenn man dort definiert))
  • ...