ASP.NET Core 1.0 w przypadku błędu usług IIS 502,5

112

Właśnie zaktualizowałem mój serwer (Windows 2012R2) do .Net Core 1.0 RTMpakietu Windows Hosting z poprzedniego .Net Core 1.0 RC2. Moja aplikacja działa na moim komputerze bez żadnych problemów, ale serwer ciągle wyświetla:

HTTP Error 502.5 - Process Failure


Common causes of this issue:

The application process failed to start
The application process started but then stopped
The application process started but failed to listen on the configured port

Wcześniej działał z wersją RC2. Nie wiem, co może się nie udać.

To jest wszystko, co mówi przeglądarka zdarzeń:

Failed to start process with the commandline 'dotnet .\MyWebApp.dll'. Error code = '0x80004005'.

najgorsze jest to, że dzienniki aplikacji są puste! Chodzi mi o to, że te pliki stdout_xxxxxxxxx.log są całkowicie puste i wszystkie mają rozmiar 0 bajtów.

Co powinienem zrobić?? Jak mogę poznać przyczynę błędu, jeśli nie jest on zarejestrowany?

Vahid Amiri
źródło
Prawdopodobnie powiązane? stackoverflow.com/questions/37362183/…
Brendan Green
3
Jak to jest powiązane? Kod błędu jest wyraźnie inny. Nie mówiąc już o tym, że powiedziałem, że działa na moim komputerze z usługami IIS.
Vahid Amiri
1
Po pierwsze, powiedziałem prawdopodobnie powiązane, ponieważ wspomina o tym Failed to start process with commandline 'dotnet ./bin/Debug/netcoreapp1.0/WebApplication2.dll', Error Code = '0x80004005'.- ten sam wiersz polecenia i kod błędu, który zgłaszasz. Po drugie, tylko dlatego, że działa na twoim komputerze, ale nie na komputerze zdalnym, wskazuje, że na serwerze jest coś innego. Byłoby to pomocne, gdybyś mógł rozszerzyć informacje na temat sposobu wdrażania aplikacji na serwerze.
Brendan Green,
co masz na myśli mówiąc, że twoja aplikacja działa na twoim komputerze ... masz na myśli projekt wdrażany na iis? czy mam rytm?
Vijunav Vastivch
1
@ VSG24 Czy widzisz tę sekcję dokumentu asp.net? Publikując w usługach IIS , zawiera listę typowych błędów i kilka przyczyn błędu 502,5.
Hamid Mosalla

Odpowiedzi:

112

Udało mi się to naprawić, uruchamiając

„C: \ Program Files \ dotnet \ dotnet.exe” „C: \ fullpath \ PROJECT.dll”

w wierszu polecenia, co dało mi znacznie bardziej znaczący błąd:

„Nie znaleziono określonej struktury„ Microsoft.NETCore.App ”w wersji„ 1.0.1 ”. - Sprawdź zależności aplikacji i wybierz wersję docelową platformy zainstalowanej w: C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App - Instalowane są następujące wersje: 1.0.0 - Alternatywnie zainstaluj wersję frameworka „1.0.1”.

Jak widać, na moim serwerze zainstalowano niewłaściwą wersję NET Core. Mogłem uruchomić moją aplikację po odinstalowaniu poprzedniej wersji 1.0.0 i zainstalowaniu poprawnej wersji 1.0.1.

hatsrumandcode
źródło
2
Udało mi się to wykorzystać, aby stwierdzić, że potrzebuję zainstalowanego NodeJS ... ponieważ daje on „znacznie bardziej znaczący komunikat”.
Tim Harker
Nie mogę ci powiedzieć, ile czasu na to zmarnowałem. Dziękuję Ci. Mój błąd dotyczył brakującego certyfikatu. Dlaczego nie mogę uzyskać tego błędu jakąś rozsądną metodą?
Sprague
4
Czy ktoś może mi powiedzieć, jakie jest polecenie? Co to jest C: \ fullpath \ dotnet ?? Ścieżka do aplikacji, ale co to jest dotnet ? W folderze projektu nie ma pliku dotnet
Jeremy Thompson
9
@JeremyThompson jest to ścieżka do pliku dotnet.exe, który zwykle znajduje się w: C: \ Program Files \ dotnet \ dotnet.exe
hatsrumandcode
1
Właśnie natknąłem się na ten błąd po aktualizacji do .NET CORE 2.1.3, naprawiłem go, instalując odpowiedni .NET SDK / środowisko uruchomieniowe.
Mike Bovenlander
68

Miałem ten sam problem, w moim przypadku było to niewystarczające pozwolenie na tożsamość użytkownika mojej puli aplikacji, na stronie Publikowanie w usługach IIS w dokumencie asp.net, istnieje kilka powodów tego błędu:

  • Jeśli opublikowała aplikację samodzielne, sprawdź, czy nie ustawić platformę w buildOptionsod project.jsonsprzeczny z publikowania RID. Na przykład nie określaj platformy x86 i publikuj z RID win81-x64 (dotnet publish -c Release -r win81-x64 ). Projekt opublikuje bez ostrzeżenia lub błędu, ale zakończy się niepowodzeniem z powyższymi zarejestrowanymi wyjątkami na serwerze.
  • Sprawdź processPathatrybut <aspNetCore>elementu w web.config, aby potwierdzić, że takdotnet to aplikacja przenośna lub. \ My_application.exe - aplikacja samodzielna.
  • W przypadku aplikacji przenośnej dotnet.exemoże nie być dostępna za pośrednictwem ustawień PATH. Potwierdź, żeC:\Program Files\dotnet\ istnieje w ustawieniach ŚCIEŻKI systemu.
  • W przypadku aplikacji przenośnej dotnet.exemoże nie być dostępna dla tożsamości użytkownika puli aplikacji. Upewnij się, że tożsamość użytkownika AppPool ma dostęp do C:\Program Files\dotnetkatalogu.
  • Upewnij się, że poprawnie odwołałeś się do oprogramowania pośredniczącego integracji usług IIS, wywołując .UseIISIntegration()metodę aplikacji WebHostBuilder().
  • Jeśli używasz .UseUrls()metody rozszerzenia podczas samodzielnego hostowania z Kestrel, potwierdź, że jest ona umieszczona przed .UseIISIntegration()metodą rozszerzającą WebHostBuilder(). .UseIISIntegration()należy ustawić Urldla zwrotnego serwera proxy podczas uruchamiania Kestrel za usługami IIS i nie może mieć zastępowanej wartości przez .UseUrls().

W moim przypadku był to czwarty powód, zmieniłem go, klikając prawym przyciskiem myszy moją pulę aplikacji, aw ustawieniach zaawansowanych w obszarze Model procesu ustawiłem tożsamość na użytkownika z wystarczającymi uprawnieniami: tożsamość użytkownika mojej puli aplikacji

Hamid Mosalla
źródło
1
To jest odpowiedź, której szukałem!, W moim przypadku była to również pula aplikacji ...
Armando Ramirez
3
Dziękuję Ci. W moim przypadku problem dotyczył ścieżki do dotnet. Znaleziono takich dzienników w systemowym Podglądu zdarzeń: Failed to start process with commandline '"dotnet" .\PROJECT.dll', ErrorCode = '0x80070002'.
0x49D1
Dodałbym jeszcze jeden powód: „Instalator nie może uzyskać pakietu redystrybucyjnego VC ++”, ponieważ mój serwer nie ma połączenia z Internetem, nie mógł pobrać tego pakietu… Dlatego musisz go ręcznie pobrać: łącze i zainstalować.
Paco Mendez
4
dotnetbył na mojej ścieżce, ale wymagał ponownego uruchomienia serwera, aby został rozpoznany.
Danny Cullen
w moim przypadku muszę określić wartość --runtime w poleceniu publikowania, jeśli podam opcję --framework, w przeciwnym razie NIE podaj --framework i domyślnie oblicza środowisko uruchomieniowe.
Gomes
66

Mam to działając z twardym resetem IIS (właśnie zainstalowałem pakiet hostingowy).

Okazuje się, że samo naciśnięcie przycisku „Uruchom ponownie” w Menedżerze usług IIS nie wystarczy. Musiałem tylko otworzyć wiersz polecenia i wpisać „iisreset”

michael_hook
źródło
Nacisnąłem również zielony recycle iis w węźle głównym serwera WWW w interfejsie użytkownika. To rozwiązało to dla mnie w połączeniu z ustawieniem użytkownika dla puli aplikacji naLocalSystem
JP Hellemons
Dzięki Michael ... To też rozwiązało mój problem. Od kilku godzin szukał odpowiedzi. Dziękuję Ci!
Birwin
2
Tx! Twoja odpowiedź przypomniała mi o tym z ms docs „Uruchom ponownie system lub wykonaj polecenie net stop było / y, a następnie polecenie net start w3svc z wiersza poleceń, aby pobrać zmianę w ścieżce systemowej”. (po zainstalowaniu pakietu .NET Core Windows Server Hosting)
Quinton Smith
Rozwiązałem też mój problem. Dzięki
Met-u
Pracował dla mnie. Dzięki :)
Husnain Shabbir
11

Dostałem więc nowy serwer, tym razem jest to Windows 2008R2 i moja aplikacja działa dobrze.

Nie mogę powiedzieć na pewno, jaki był problem ze starym serwerem, ale mam jeden pomysł.

Ponieważ wcześniej skompilowałem aplikację bez żadnej platformy, dała mi dllwersję, która działa tylko wtedy, gdy docelowy host ma .Net Core Windows Hostingzainstalowany pakiet. W moim przypadku został zainstalowany i to było w porządku .

Po tym, jak aplikacja nie działała, zdecydowałem się skompilować ją jako aplikację konsolową ze win7-x64środowiskiem wykonawczym. Tym razem w momencie, gdy uruchomiłem exemoją aplikację na serwerze, zawiesiła się z błędem dotyczącym brakującej biblioteki DLL:

The program can't start because api-ms-win-crt-runtime-l1-1-0.dll is missing

Ta biblioteka dll pochodzi z uniwersalnego środowiska wykonawczego języka C, które jest zawarte w pakiecie redystrybucyjnym Visual C ++ dla programu Visual Studio 2015 .

Próbowałem zainstalować ten pakiet (zarówno x64, jak i x86), ale za każdym razem kończyło się to niepowodzeniem (nie wiem dlaczego) w systemie Windows Server 2012 R2.

Ale kiedy próbowałem zainstalować je na nowym serwerze, Windows Server 2008 R2, pomyślnie się zainstalowały. To mógł być powód tego, ale nadal nie mogę powiedzieć na pewno.

Vahid Amiri
źródło
5

Miałem ten sam problem podczas publikowania aplikacji internetowej. Jeśli ktoś nadal ma ten problem, rozwiązał go, zmieniając {AppName} .runtimeconfig.json

    {
  "runtimeOptions": {
    "framework": {
      "name": "Microsoft.NETCore.App",
      "version": "1.1.2"
    },
    "configProperties": {
      "System.GC.Server": true
    }
  }
}

Zmień wersję z „wersja”: „1.1.2” na „wersja”: „1.1.1” i wszystko działało dobrze

npo
źródło
5

Miałem ten sam problem.

Aby znaleźć dokładne jego źródło włączyłem logowanie do pliku web.config:

<aspNetCore processPath="dotnet" arguments=".\MyWebService.dll" stdoutLogEnabled="**true**" stdoutLogFile=".\logs\stdout" />

i utworzył podfolder logów w folderze głównym MyWebService.

Po ponownym uruchomieniu IIS i próbie uruchomienia API wystąpił błąd i brakowało odpowiedniego Core Runtime. Po pobraniu instalacji DotNetCore.1.0.5_1.1.2-WindowsHosting błąd zniknął.

Eduard Silantiev
źródło
3
IMO powinieneś usunąć gwiazdki z „prawdziwej” wartości, aby uniknąć nieporozumień.
AperioOculus
4

Miał ten sam problem i wszystkie rozwiązania nie działały. Znalazłem ten klejnot i pomyślałem, że przejdę dalej, jeśli pomoże to komuś innemu. Zainstaluj na serwerze 2012 R2, otrzymując błąd braku biblioteki DLL, spróbuj ponownie zainstalować VS C ++ 2015 i otrzymaj błąd. Poprawka polega na wykonaniu następujących czynności:

Wygląda na to, że plik C:\ProgramData\Package Cache\...\packages\Patch\x64\Windows8.1-KB2999226-x64.msuma problemy z instalacją. Otwórz wiersz polecenia administratora, wykonaj:

c:
mkdir tmp
mkdir tmp\tmp
move "C:\ProgramData\Package Cache\...\packages\Patch\x64\Windows8.1-KB2999226-x64.msu" c:\tmp
expand -F:* c:\tmp\Windows8.1-KB2999226-x64.msu c:\tmp\tmp
dism /online /add-package /packagepath:c:\tmp\tmp\Windows8.1-KB2999226-x64.cab

UWAGA: zastąp „...” poprawną nazwą folderu. Następnie zainstaluj ponownie pakiet VS C ++ 2015.

Lee Harris
źródło
4

Miałem podobny problem i cytując Sherlocka Holmesa: „ kiedy wyeliminowałeś niemożliwe, cokolwiek pozostaje, jakkolwiek nieprawdopodobne, musi być prawdą?

Sprawdziłem, czy docelowa platforma .NET jest zainstalowana na serwerze i okazuje się, że tak nie jest. Zainstalowałem 4.6.2 .NET Framework i zadziałało.

TheDoctor05
źródło
4

Ten problem wystąpił na moim serwerze produkcyjnym po automatycznej aktualizacji mojego projektu VS do .NET Core 1.1.2.

Po prostu zainstalowałem środowisko uruchomieniowe 1.1.2 .net core na moim serwerze produkcyjnym: https://www.microsoft.com/net/download/core#/runtime

Rikard Askelöf
źródło
Natknąłem się na ten sam problem, ale z nowo wydanym rdzeniem sieciowym 2.0.6. Naprawiono przez zainstalowanie zestawu SDK NET Core 2.0.6 na serwerze produkcyjnym
dodbrian
4

ROZWIĄZANE Właśnie dzisiaj napotkałem ten sam problem podczas wdrażania do platformy AZURE . Następnie wypróbowałem to samo dla lokalnych usług IIS, napotkałem ten sam problem. Ponieważ jestem nowy w .net CORE, zmagałem się kilka godzin, zanim faktycznie go rozwiązałem.

W naszym rozwiązaniu, po opublikowaniu w IIS, zauważyłem mój plik web.confile, szczególnie poniżej linii <aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" />

W naszym folderze wdrożeniowym wygenerowany plik web.config wygląda następująco:<aspNetCore processPath="dotnet" arguments=".\Yodlee.dll -argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

Teraz PROSZĘ spróbuj zmienić powyższą konfigurację w rozwiązaniu Visual Studio na<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" forwardWindowsAuthToken="false" stdoutLogEnabled="false" />

W naszym nowym folderze wdrożeniowym wygenerowany plik web.config wygląda następująco:<aspNetCore processPath="dotnet" arguments=".\Yodlee.dll" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

I to rozwiązało mój problem, mam nadzieję, że to pomoże.

Agni
źródło
Hej @Agni, to zadziałało dla mnie, dzięki. Jednak za każdym razem, gdy próbuję ponownie opublikować projekt na platformie Azure, jest on przebudowywany, a plik web.config jest automatycznie zmieniany z powrotem na oryginalny, z częścią powodującą problem: „-argFile IISExeLauncherArgs.txt”. Czy znalazłeś na to rozwiązanie? (Używam asp.net core 2.0).
Rodrigo Pires
1
w moim przypadku musiałem zmienić processPath="dotnet"się processPath="C:\Program Files\dotnet\dotnet.exe". wtedy zadziałało.
vaheeds
3

Miałem ten sam problem, kiedy zaktualizowałem moją maszynę deweloperską do Core 1.0.1, ale zapomniałem zaktualizować serwer.

Alex Dresko
źródło
Dla mnie ponownie zainstalowałem zestaw SDK net core stąd: microsoft.com/net/core#windows, a potem zadziałało.
Jean
1
VS2017 jest teraz domyślnie .NET Core 1.1 - wszystkie zdalne serwery muszą zostać zaktualizowane przed opublikowaniem zaktualizowanych projektów do IIS. Możesz otrzymać bardziej pomocny komunikat o błędzie („.NET core 1.1 nie jest zainstalowany”), ale działadotnet .\YOURPROJDLL.dll
Coruscate5
3

Otrzymałem błąd HTTP 502.5 podczas próby opublikowania mojego interfejsu API .NET Core 2.0 w AWS EB i rozwiązałem go, dodając następujący kod do pliku .csproj:

  <PropertyGroup>
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
  </PropertyGroup>
Matheus Lacerda
źródło
2

Miałem ten sam problem. Zmieniłem tożsamość puli aplikacji na konto usługi sieciowej. Następnie wyraźnie ustawiłem ścieżkę do dotnet.exe w pliku web.config, aby aplikacja działała poprawnie, jak powiedział @danielyewright na swoim githubie komentarza. Działa po ustawieniu ścieżki.

Dzięki

vik
źródło
2

Udostępnianie, że w moim przypadku ten błąd był spowodowany tym, że zapomniałem zaktualizować plik project.json za pomocą:

"buildOptions": {
    "emitEntryPoint": true
  }
vinjenzo
źródło
2

Miałem ten sam błąd, z tymi samymi problemami, które opisał VSG24 w Propozycji odpowiedzi - nieprzyjemny komunikat o błędzie podczas wpisywania `` dotnet '' w CMD:

Nie można uruchomić programu, ponieważ brakuje pliku api-ms-win-crt-runtime-l1-1-0.dll

Rozwiązałem to, ręcznie instalując następujące 2 aktualizacje w systemie Windows Server 2012 R2 (wraz z wymaganiami wstępnymi i wszystkimi innymi aktualizacjami połączonymi - przeczytaj uważnie instrukcje instalacji w witrynie firmy Microsoft):

  1. KB2919355
  2. KB2999226

Mam nadzieję, że to komuś pomoże.

Johan Foley
źródło
2

Napotkałem ten sam problem, gdy próbowałem opublikować wersję debugowania mojej aplikacji internetowej. Ten zestaw plików nie zawierał pliku web.configo prawidłowej wartości atrybutu processPath.

Wziąłem ten plik z wersji Release, wartość została przypisana do ścieżki do mojego pliku exe.

<aspNetCore processPath=".\My.Web.App.exe" ... />
Barabas
źródło
2

W moim przypadku był problem z wersją Net Core zainstalowaną na serwerze. Po prostu instaluję tę samą wersję, co na moim komputerze deweloperskim i wszystko jest w porządku :-)

Słona ryba
źródło
2

Musiałem zainstalować najnowszą wersję .net Core znalezioną tutaj . Nie ma potrzeby ponownego uruchamiania witryny lub serwera

Daniel Dirty Native Martin
źródło
2

Rozwiązałem to, dodając „uprawnienia do edycji” do aplikacji serwisu, mapowałem do katalogu fizycznego, a następnie wybrałem użytkownika systemu Windows, który mógłby mieć dostęp do tego folderu głównego. (prywatna sieć).

Antonin GAVREL
źródło
2

W moim przypadku po zainstalowaniu AspNetCore.2.0.6.RuntimePackageStore_x64.exei DotNetCore.2.0.6-WindowsHosting.exemuszę zrestartować serwer, aby działał bez błędu 502 złej bramy i proxy.

AKTUALIZACJA:

Jest sposób, abyś mógł go użyć bez restartu: https://stackoverflow.com/a/50808634/3634867

John_J
źródło
2

Otwórz wiersz polecenia z poświadczeniami administratora

Wpisz następujące polecenie i naciśnij Enter

> IISRESET

LUB

Otwórz program Visual Studio 2017 z poświadczeniami administratora

Wpisz następujące polecenie w konsoli Menedżera pakietów i naciśnij Enter

PM > IISRESET

PM> IISRESET
Attempting stop...
Internet services successfully stopped
Attempting start...
Internet services successfully restarted
Akshay Mishra
źródło
2

U mnie było to spowodowane zainstalowaniem różnych wersji .Net Core. Dopasowałem mój serwer deweloperski i produkcyjny i zadziałało.

Carla
źródło
1

Miałem również ten problem (błąd wystąpił zarówno na VS 15, jak i 17). Jednak na VS15 zwrócił CONNECTION_REFUSEDbłąd, a na VS17 zwrócił ASP.NET Core 1.0 on IIS error 502.5.

NAPRAWIĆ

  1. Przejdź do katalogu swojego projektu i znajdź ukryty folder .vs(znajduje się w katalogu projektów). (Pamiętaj, aby pokazać ukryte pliki / foldery)

  2. Zamknij VS

  3. Usuń folder .vs
  4. Uruchom VS jako administrator (folder .vs zostanie odtworzony przez VS)
Unicco
źródło
1

Oto, do czego doszedłem, a stało się to niedawno w systemie Windows 10 po zainstalowaniu aktualizacji. Z tego, co zebrałem, zainstalowano aktualizację programu Windows Defender, która zakładała, że ​​mój plik „Project.dll” (podstawowy projekt asp.net) zachowywał się jak wirus, więc został usunięty.

Tak więc jedną z pierwszych rzeczy, które proponuję zrobić przed rozpoczęciem instalowania / odinstalowywania programów, jest sprawdzenie, czy plik „Project.dll” jest tam, gdzie powinien.

Skopiuj go z powrotem do lokalizacji, jeśli już jej nie ma.

Jeśli masz trudności z skopiowaniem pliku z powrotem, dodaj wykluczenie do folderu projektu w programie Windows Defender . ( Dowiedz się, jak to zrobić tutaj .)

To zadziałało dla mnie natychmiast i powtórzyłem to na wielu serwerach aplikacji.

Seun S. Lawal
źródło
1

Dla mnie było to, że connectionString w Startup.cs był pusty w:

services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

i był pusty, ponieważ aplikacja nie szukała parametrów połączenia w pliku appsettings.json.

Musiałem zmienić Program.cs na:

public static void Main(string[] args)
{
    BuildWebHost(args).Run();
}

public static IWebHost BuildWebHost(string[] args) =>
     WebHost.CreateDefaultBuilder(args)
     .ConfigureAppConfiguration((context, builder) => builder.SetBasePath(context.HostingEnvironment.ContentRootPath)
     .AddJsonFile("appsettings.json").Build())
     .UseStartup<Startup>().Build();
Andrei Dobrin
źródło
1

Nie mam pojęcia, dlaczego to zadziałało, ale używam uwierzytelniania systemu Windows i miałem ten fragment kodu na moim BuildWebHostw Program.cs:

.UseStartup<Startup>()
.UseHttpSys(options =>
{
    options.Authentication.Schemes =
        AuthenticationSchemes.NTLM | AuthenticationSchemes.Negotiate;
    options.Authentication.AllowAnonymous = false;
})
.Build();

Po usunięciu tego .UserHttpSysbitu działa i nadal mogę uwierzytelniać się jako użytkownik domeny.

BuildWebHost teraz wygląda

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .Build();
Bassie
źródło
Mam uwierzytelnianie plików cookie w rdzeniu aspnet. Jak skonfigurować?
kudlatiger
@kudlatiger Przepraszam, nie jestem pewien - najlepiej jest stworzyć osobne pytanie
Bassie
1

Otrzymałem ten sam błąd i odkryłem, że problem polegał na tym, że podczas publikowania na platformie Azure mój plik web.config został zmodyfikowany, więc następująca linia zakończyła się następująco:

<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" startupTimeLimit="3600" requestTimeout="23:00:00" />

Problemem dla produkcji jest zawartość argumentów: „-argFile IISExeLauncherArgs.txt”

Wygląda na to, że ten problem zostanie rozwiązany w następnym zestawie .NET Core SDK (obecnie w wersji zapoznawczej), ale na razie obejściem jest dodanie tego bloku do pliku .csproj:

<Target Name="bug_242_workaround" AfterTargets="_TransformWebConfig">
    <Exec Command="powershell &quot;(Get-Content '$(PublishDir)Web.config').replace(' -argFile IISExeLauncherArgs.txt', '') | Set-Content '$(PublishDir)Web.config'&quot;" />
  </Target>

Spowoduje to zmodyfikowanie pliku web.config i usunięcie problematycznej części do publikacji.

Odniesienie: https://github.com/aspnet/websdk/issues/242

Mam nadzieję, że to pomoże.

Rodrigo Pires
źródło
Dodawane atrybuty startupTimeLimit i requestTimeout wydają się być błędem narzędzi .
Mark G
1

U mnie zadziałało po zmianie konfiguracji publikowania.

wprowadź opis obrazu tutaj

MAFAIZ
źródło
Przepraszamy, nie widzę obrazów w mojej organizacji. Pobieranie obrazów jest zablokowane (w większości organizacji).
Auguste
0

Miałem podobny problem (Asp.Net Core 2.x), który był spowodowany próbą uruchomienia 32-bitowej aplikacji asp.net core w usługach IIS na 64-bitowym serwerze Windows. Główną przyczyną było to, że plik web.config, który jest generowany automatycznie (jeśli projekt nie zawiera jawnie jednego, którego projekty podstawowe asp.net nie zawierają domyślnie) nie zawiera pełnej ścieżki do pliku wykonywalnego dotnet. Po zainstalowaniu pakietu hostingowego na komputerze 64-bitowym zainstaluje on 64 i 32-bitowe wersje dotnet, ale ścieżka zostanie domyślnie rozwiązana na 64-bitową, a 32-bitowa aplikacja asp.net core nie zostanie załadowana. W przeglądarce możesz zobaczyć błąd 502.5, a jeśli spojrzysz na dziennik zdarzeń serwera, możesz zobaczyć kod błędu 0x80004005. Jeśli spróbujesz uruchomić dotnet.exe z wiersza polecenia w celu załadowania biblioteki DLL aplikacji asp.net core na tym serwerze, może zostać wyświetlony błąd, taki jak „BadImageFormatException” lub „

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <location path="." inheritInChildApplications="false">
        <system.webServer>
            <handlers>
                <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
            </handlers>
            <aspNetCore processPath="C:\Program Files (x86)\dotnet\dotnet.exe" arguments=".\My32BitAspNetCoreApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
       </system.webServer>
   </location>
</configuration>
Nathan
źródło
0

Mam ten sam problem, a powodem w moim przypadku było to, że rdzeń EF próbował odczytać parametry połączenia z appsettings.development.jsonpliku. Otworzyłem go i stwierdziłem, że parametry połączenia zostały skomentowane.

//{
//  "ConnectionStrings": {
//    "DefaultConnection": "Server=vaio;Database=Goldentaurus;Trusted_Connection=True;",
//    "IdentityConnection": "Server=vaio;Database=GTIdentity;Trusted_Connection=True;"
//  }
//}

Następnie zwolniłem je jak poniżej i problem został rozwiązany:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=vaio;Database=Goldentaurus;Trusted_Connection=True;",
    "IdentityConnection": "Server=vaio;Database=GTIdentity;Trusted_Connection=True;"
  }
}
yogihosting
źródło