Press "Enter" to skip to content

U mnie działa – zależnie od maszyny

Po miesiącu wrócił do mnie z gwarancji lapek – w pełni sprawny i gotów do działania. Trzeba więc na powrót przenieść do niego wszelakie projekty. W tym… api webowe.
Zależało mi na selfhostowaniu – ktoś mógłby powiedzieć – przecież iis nie ma takich problemów. Ale to już serwer HTTP i tak ręka mi drży jak mam go odpalić, więc wolę nie, przynajmniej na razie.


Mówiłam już jak bardzo kocham projekty webowe? Między innymi dlatego.

 

Wyjątki. Jeszcze żeby faktycznie były one związane z klasyczną pomyłką w pisaniu kodu, są przydatne. Czasami jednak doprowadzają do szewskiej pasji i przyprawiają o autoagresję. 
No weźmy sobie takiego.

info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
      User profile is available. Using 'C:\Users\NIEPODAMUSERA\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
crit: Microsoft.AspNetCore.Server.Kestrel[0]
      Unable to start Kestrel.
System.InvalidOperationException: Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found.
To generate a developer certificate run 'dotnet dev-certs https'. To trust the certificate (Windows and macOS only) run 'dotnet dev-certs https --trust'.
For more information on configuring HTTPS see https://go.microsoft.com/fwlink/?linkid=848054.
   w Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(ListenOptions listenOptions, Action`1 configureOptions)
   w Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.AddressesStrategy.<BindAsync>d__2.MoveNext()
--- Koniec śladu stosu z poprzedniej lokalizacji, w której wystąpił wyjątek ---
   w System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   w System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   w Microsoft.AspNetCore.Server.Kestrel.Core.Internal.AddressBinder.<BindAsync>d__0.MoveNext()
--- Koniec śladu stosu z poprzedniej lokalizacji, w której wystąpił wyjątek ---
   w System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   w System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   w Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer.<StartAsync>d__21`1.MoveNext()

No i przymknęłabym oko, gdyby nie fakt, że tylko na jednej z trzech maszyn mi nie działa – i to tylko pod debuggerem. Jak odpalę „z palca” to nie ma problemu.
I obejściem problemu było oczywiście odpalanie z palca, następnie z poziomu VS danie „attach to process”, no spoko. 
Ale nadal było to obejście procesu a nie próba rozwiązania – więc… zapragnęłam rozwiązać to I JUŻ.

Na pierwszy ogień poszła podpowiedź z wyjątku (naiwna, no ale głupia to naiwna)

C:\Windows\system32>dotnet dev-certs https
The HTTPS developer certificate was generated successfully.

C:\Windows\system32>dotnet dev-certs https --trust
Trusting the HTTPS development certificate was requested. A confirmation prompt will be displayed if the certificate was not previously trusted. Click yes on the prompt to trust the certificate.
A valid HTTPS certificate is already present.

Świetnie. No to zamykam vs, otwieram, próba debugowania, ten sam wyjątek, reboot, nic nie zmienia, generuję jeszcze raz, wklepuję różne znalezione w sieci komendy (pisałam że naiwna?) no i jak nie działało tak nie działa.

Uzbierała się tego całkiem spora ilość.
Aż w którymś momencie natrafiłam przypadkiem na taki link .

I tam zalecili by … zamiast generować to raczej je wyczyścić. No i wyczyściłam, przegenerowałam certa jak powyżej (jak wyjątek zalecił), SOA#1.

Jak to czyszczenie przebiegło?


Okienko+r -> mmc -> ctrl +m (dodaj usuń przystawkę z menu plik), a potem wybrać jak na obrazku

dodawanie przystawki certyfikaty

Po kliknięciu OK przedstawia się nam następujące okno.

Certyfikaty

No, eksportujemy te co są dla nas szczególnie ważne, zaznaczamy wszystko, del

Następnie znowu

dotnet dev-certs https
dotnet dev-certs https --trust

I zadziałało – przynajmniej na tym kompie i przynajmniej w tym momencie.
Bo z tymi webami to nigdy nic nie wiadomo. Aż boję się co będzie jutro i czy znowu po przeniesieniu będzie działać.

3 komentarze

  1. U mnie działa – zależnie od maszyny

    Dziękujemy za dodanie artykułu – Trackback z dotnetomaniak.pl

  2. Na każdej maszynie powinien być zainstalowany lokalny certyfikat. Jak nie ma to VS generuje i prosi o dodanie. Nie spotkałem się z przypadkiem żeby trzeba było wszystko czyścić. A widać że czasem też tak trzeba zrobić. Fajny post.

    • ja ja

      Problem był taki, że certyfikat był, i to nie jeden, i zaufany.
      No ale okazało się, że nie potrafił z jakiegoś powodu go użyć (jakiś lock, cholera wie) i trzeba było mu na nowo wrzucić by się nauczył z niego korzystać.
      Tak czy inaczej – działa

      Podejrzewam, że jak kopiowałam całą zawartość folderu domowego z 1 kompa na 2 to może coś się pokasztaniło.

Comments are closed.