Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem z uruchomieniem programu


Rekomendowane odpowiedzi

Opublikowano

Cześć. Mam problem z uruchomieniem napisanego przeze mnie programu na innych komputerach, które nie mają zainstalowanego Visual Studio.

Objawy są takie, że program uruchomi się ale po kliknięciu przycisku zaloguj, gdzie w pierwszej kolejności uruchamiany jest nowy wątek program się crashuje. Dlaczego tak się dzieje? Mam ustawione Release (Any CPU). Niestandardowe biblioteki znajdują się w folderze z programem.

 

Ok, ogólnie kod każdej metody miałem w try catch, z wyjątkiem nie wielkiej części w metodzie do raportowania błędów na mój serwer, która to właśnie powodowała zamknięcie programu. Metoda ta była wywoływana w przypadku braku konkretnej odpowiedzi od serwera.

Teraz program się nie zamyka, jednak odpowiedź serwera to nadal 2 krzaczki zamiast konkretnej treści.

 

Tak wygląda kod pierwszego zapytania (dzieje się tak zarówno przy pierwszym zapytaniu, które używa metody GET, jak i przy drugim, które używa metody POST):

request = (HttpWebRequest)WebRequest.Create("http://jakas_strona.pl/");
request.Credentials = CredentialCache.DefaultCredentials;
request.Timeout = 10000;
request.Method = WebRequestMethods.Http.Get;
request.Headers.Add("Pragma", "no-cache");
request.Headers.Add("Cache-Control", "no-cache");
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
request.Headers.Add("Upgrade-Insecure-Requests", "1");
((HttpWebRequest)request).UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36";
request.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
request.Headers.Add("Accept-Language", "pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4");
request.CookieContainer = cookieContainer;

using (var sr = new StreamReader(request.GetResponse().GetResponseStream(), Encoding.UTF8))
{
   webResponse = sr.ReadToEnd();
}

4417049059_6234f40fb5.jpg
Storm has passed but the destruction are still visible.

Opublikowano

"Program przestał działać". Kod jest napisany dobrze, działa u mnie na Win 7 i u kolegi na Win 10 działa. Ale kolega też miał Visual Studio. Nie jestem pewien w 100% czy Visual Studio ma tu coś do rzeczy ale chyba tak skoro u innych nie działa.

4417049059_6234f40fb5.jpg
Storm has passed but the destruction are still visible.

Opublikowano

Jednak nie, inny gość zainstalował VS i dalej ma to samo. Ja z kolei w VirtualBox postawiłem Win 7 i zainstalowałem .NET 4.5 i działa wszystko.

4417049059_6234f40fb5.jpg
Storm has passed but the destruction are still visible.

  • 2 tygodnie później...
Opublikowano

Witam. Problem występuje nadal. Na niektórych komputerach działa, a na niektórych nie, system nie ma przy tym znaczenia.

Używam HttpWebRequest. Na komputerze na którym program nie działa, odpowiedź serwera zawiera tylko 2 krzaczki, a zupełnie inaczej powinno to wyglądać.

To może być wina ustawień proxy? Jak to sprawdzić? Nie mam ciągle dostępu do komputera na którym nie działa więc chciałbym zrobić żeby u mnie nie działało.

4417049059_6234f40fb5.jpg
Storm has passed but the destruction are still visible.

Opublikowano

Visual Studio Community 2015 instalowałeś?

 

Edit:

 

Próbowałeś debugować?

Opublikowano

Nie, nie mam takiej możliwości na komputerze na którym to nie działa. :(

4417049059_6234f40fb5.jpg
Storm has passed but the destruction are still visible.

Opublikowano

Jedna osoba napisała, że wyłączyła całkowicie antywirusa i nadal to samo. Dodatkowo program w przypadku braku połączenia z Internetem wyświetla okienko z informacją o błędzie. Tutaj nic takiego się nie pokazuje, chociaż nie wiem czy jak antywirus blokuje to jest tak samo.

4417049059_6234f40fb5.jpg
Storm has passed but the destruction are still visible.

Opublikowano

Zapisuj wyniki wszystkich metod, to dowiesz się, w którym miejscu przerywane jest wykonywanie kodu.

Opublikowano

Ok, ogólnie kod każdej metody miałem w try catch, z wyjątkiem nie wielkiej części w metodzie do raportowania błędów na mój serwer, która to właśnie powodowała zamknięcie programu. Metoda ta była wywoływana w przypadku braku konkretnej odpowiedzi od serwera.

Teraz program się nie zamyka, jednak odpowiedź serwera to nadal 2 krzaczki zamiast konkretnej treści.

 

Tak wygląda kod pierwszego zapytania (dzieje się tak zarówno przy pierwszym zapytaniu, które używa metody GET, jak i przy drugim, które używa metody POST):

                request = (HttpWebRequest)WebRequest.Create("http://jakas_strona.pl/");
                request.Credentials = CredentialCache.DefaultCredentials;
                request.Timeout = 10000;
                request.Method = WebRequestMethods.Http.Get;
                request.Headers.Add("Pragma", "no-cache");
                request.Headers.Add("Cache-Control", "no-cache");
                request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
                request.Headers.Add("Upgrade-Insecure-Requests", "1");
                ((HttpWebRequest)request).UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36";
                request.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
                request.Headers.Add("Accept-Language", "pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4");
                request.CookieContainer = cookieContainer;

                using (var sr = new StreamReader(request.GetResponse().GetResponseStream(), Encoding.UTF8))
                {
                      webResponse = sr.ReadToEnd();
                }

4417049059_6234f40fb5.jpg
Storm has passed but the destruction are still visible.

Opublikowano

"krzaczki" to pewnie skompresowane bajty.

request.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");

Opublikowano

Abstrahując od głównego tematu, na pewno masz jakąś funkcję typu Log(), możesz w niej dodać coś w stylu

#if DEBUG
if (!konsolaWidoczna)
AllocConsole()
Console.WriteLine("jakiś tekst");
#endif

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...