2009-08-18 3 views
2

J'ai continué à recevoir l'erreur 12029 (ERREUR INTERNET IMPOSSIBLE DE CONNEXION, La tentative de connexion au serveur a échoué.) Lors de l'utilisation des classes MFC wininet sur Windows Vista. La cause de l'erreur était due à Windows Defender. Existe-t-il un meilleur moyen de contourner ce problème que de désactiver complètement Windows Defender? J'ai essayé d'éteindre "la protection en temps réel" en vain, j'ai dû désactiver complètement WD pour arrêter les erreurs 12029."Y a-t-il un meilleur moyen?" Erreur 12029 avec wininet sur Windows Vista

S'il n'y a pas de meilleure solution, nous espérons que quelqu'un d'autre avec le même problème verra cette question et sera capable de résoudre son problème. J'ai cherché les intertubes haut et bas et n'a pas trouvé de références croisées entre l'erreur wininet 12029 et WD.

Mon code de référence

::CInternetSession session; 
::CHttpConnection* connection = session.GetHttpConnection(L"twitter.com",80,m_csUserName,m_csPassword); 
::CHttpFile* httpfile = connection->OpenRequest(CHttpConnection::HTTP_VERB_GET,L"/account/verify_credentials.xml");    
httpfile->SendRequest(); 
+0

Eh bien zut, mon visage est rouge. J'ai tout travaillé avec WD éteint et maintenant je reçois l'erreur encore .... même avec Windows Defender et Windows Firewall complètement éteint et un redémarrage. Quelqu'un a-t-il des idées? – JohnG

Répondre

2

Si Windows Defender affiche un message d'avertissement après avoir bloqué votre programme, vous devriez avoir la possibilité d'ajouter votre programme à une liste des « articles autorisés » qui lui permettront de fonctionner non encombré alors que la protection en temps réel reste activée. Certes, ceci n'est une option viable que si vous travaillez avec du code non-production/personnel (et si Defender affiche même un message d'avertissement). Cela dit, il est possible que Defender ait détecté un risque potentiel en fonction de la façon dont vous utilisez la bibliothèque Wininet. Serait-il possible d'utiliser des sockets de niveau inférieur à la place? Si c'est le seul code réseau que vous utilisez, il sera facile de le répliquer via la bibliothèque winsock générique et il y a de fortes chances que Defender soit beaucoup moins enclin à bloquer votre programme si vous l'utilisez à la place de wininet.


Modifier: En plus de tester le fragment MFC séparément comme je l'ai suggéré dans les commentaires ci-dessous, il peut être utile de l'essayer comme WinAPI standard - l'idée étant que la bibliothèque Wininet ne fonctionne pas correctement. ordinateur, ce code devrait pas se connecter:

int read = 0; 
char* str = "*/*", buff[1024] = {}; 
HINTERNET inet = InternetOpen("GRB", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); 
if (!(inet=InternetConnect(inet, "twitter.com", 80, "username", "password", INTERNET_SERVICE_HTTP, 0, 0))) 
    cout << "conn failed" << endl; 
if (!(inet=HttpOpenRequest(inet, "GET", "/account/verify_credentials.xml", NULL, NULL, (const char**)&str, 0, 0))) 
    cout << "open failed" << endl; 
if (!HttpSendRequest(inet, NULL, 0, NULL, 0)) 
    cout << "send failed" << endl; 
InternetReadFile(inet, buff, 1023, (DWORD*)&read); 
cout << buff << endl; 
system("pause"); 

(conçu pour être un programme de console, assurez-vous d'inclure les en-têtes/bibliothèques correctes)

+0

Je suppose que j'aurais dû réaliser que peut-être WD n'était pas un problème parce que je n'ai pas reçu un avertissement que WD avait bloqué quoi que ce soit. (voir le commentaire sur la question originale) Connaissez-vous autre chose que WD et le pare-feu Windows qui pourraient bloquer cela? Merci pour votre réponse. – JohnG

+0

Sauf si vous avez un programme antivirus en cours d'exécution, je doute que tout autre chose pourrait interférer avec votre programme. Sachant cela, je suppose que le problème peut être sur la fin de Twitter et que leur serveur ne répond pas dans le délai imparti. Un moyen de vérifier cela pourrait être de boucler certains appels winchinet InternetCheckConnection dans une petite application de la console et de voir combien de fois la connexion à Twitter échoue. J'ai essayé de le faire moi-même avec ICC et la connexion a échoué à quelques reprises, certains arrivant très près du timeout, par opposition à l'appel d'ICC sur google.com qui n'a jamais échoué. – GRB

+0

Une autre raison pour laquelle je pense que cela est probable est que Twitter a été récemment victime de certaines attaques DDOS, il est donc possible qu'elles continuent ou que les serveurs récupèrent encore de la charge supplémentaire. – GRB

Questions connexes