Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[VB VS2015] Próba utworzenia HttpListener powoduje błąd

TvWidget 12 Sty 2018 23:36 156 5
  • #1 12 Sty 2018 23:36
    TvWidget
    Poziom 30  

    Napisałem przy pomocy VS2015 program konsolowy. Między innymi realizuje on funkcję prostego serwera HTTP. Na części komputerów przy próbie utworzenia obiektu HttpListener pojawia się taki komunikat "System.Net.HttpListenerException: Proces nie może uzyskać dostępu do pliku, ponieważ jest on używany przez inny proces." Zauważyłem, że pewne programy uruchomione w tle powodują opisany problem. Czy można jakoś temu zaradzić ?

    0 5
  • #2 13 Sty 2018 01:34
    JacekCz
    Poziom 34  

    Kod Kolego.
    Jakie programy i co jeszcze wiesz?

    PS. Nie pisze się programów w języku VS2015, bo taki nie istnieje

    0
  • #3 13 Sty 2018 08:30
    TvWidget
    Poziom 30  

    Program napisałem w VB przy pomocy środowiska VS2015. Uruchamiam go w Win10. Błąd pojawia się na samym początku jeszcze przed wywołaniem Main

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Na moim PC problem powoduje wcześniejsze uruchomienie środowiska do tworzenia kodu na jeden z procesorów. Środowisko oparte jest na Eclipse. Jeśli wcześniej uruchomię moją aplikację a potem to środowisko to wszytko trwale jest OK. Tzn. od tej chwili mogę już zamykać i ponownie uruchamiać mój program.

    0
  • #4 13 Sty 2018 09:21
    JacekCz
    Poziom 34  

    Nadal to nie jest pełny kod.
    Zwłaszcza, że piszesz, że to przed Main()


    Komunikat MOŻE ZNACZYĆ że wykonywany (zaplanowany do wykonania) program jest wykonywany w innym procesie. Ale to jest wróżenie z fusów.
    Jak wygląda pełny wyjątek?
    Środowisko .NET jest w pełni wiarygodne, i jakiekolwiek problemy mają racjonalne przyczyny.

    0
  • #5 13 Sty 2018 10:59
    TvWidget
    Poziom 30  

    Cały program jest dość długi. Trudno więc zamieścić tu kompletny kod.
    Jego wykonywanie dochodzi do linii z instrukcją http = New HttpListener(). W przypadku próby uruchomienia programu w trybie debug z poziomu VS pojawia się tylko komunikat "An unhandled exception of type 'System.TypeInitializationException' occurred in mscorlib.dll"
    Kiedy uruchamiam skompilowaną wersję to w okienku konsoli widoczny jest taki komunikat jaki podałem wcześniej.
    Zaznaczam, że moja aplikacja w dominującej większości przypadków działa dobrze. Jedynie czasem ktoś zgłasza, że na jego kompuerze występuje opisany problem.


    System.TypeInitializationException was unhandled
    HResult=-2146233036
    Message=Inicjator typów zgłosił wyjątek dla typu 'ConsoleApplication1.Module1'.
    Source=HubServer
    TypeName=ConsoleApplication1.Module1
    StackTrace:
    w ConsoleApplication1.Module1.Main()
    w System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
    w System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    w Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    w System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    w System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    w System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    w System.Threading.ThreadHelper.ThreadStart()
    InnerException:
    ErrorCode=32
    HResult=-2147467259
    Message=Proces nie może uzyskać dostępu do pliku, ponieważ jest on używany przez inny proces
    NativeErrorCode=32
    Source=System
    StackTrace:
    w System.Net.HttpListener.AddAllPrefixes()
    w System.Net.HttpListener.Start()

    0
  • #6 13 Sty 2018 12:28
    JacekCz
    Poziom 34  

    Wrzutka System.Net.HttpListener.AddAllPrefixes w google daje m.in.
    https://stackoverflow.com/questions/4019466/httplistener-access-denied

    GDYBY o to chodziło, rzecz polega na tym, że Windows broni podziału ról pomiędzy wszelkimi http listenerami (mogą być różne dla różnych części URL), co się zarządza podaną komendą netsh.
    GENERALNIE nie są to informacje dane ze złośliwości Microsoftu, tylko aby pomóc, i wszystko tu jest racjonalne.

    W hipotetycznym moim projekcie bym dotarł do twardej wiedzy, dlaczego jeden komputer tak, drugi nie, bo w kosmitów to nie wierzę. Błąd jest wart wytropienia, bo może ukrywać / ujawniac inny.
    W sferze przypuszczeń bym się doktoryzował nad nadpisywaniem 'New' (zasadniczo nie uprawiam Basica) , wszystkim co wpływa na start itd ...

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo