2009-11-09 8 views
10

Ich habe zwei WCF-Clients, die einen Webdienst eines Drittanbieters verwenden.Es konnte kein Endpunkt bei <URI> empfangen werden, der die Nachricht annehmen konnte. Dies wird oft durch eine falsche Adresse oder eine falsche SOAP-Aktion verursacht.

Diese beiden Clients führen denselben Methodenaufruf aus. In dem einen Fall funktioniert es jedes Mal, in dem anderen Fall bekomme ich die Nachricht "Es gab keinen Endpunkt zuhören ...".

Soweit ich sagen kann, der einzige Unterschied zwischen den beiden Aufrufen ist, dass sie in zwei verschiedenen Client-Exes sind, und das bedeutet, dass die .exe.config-Dateien nicht identisch sind. Sie verwenden denselben Quellcode, der von den beiden Projekten in Visual Studio gemeinsam genutzt wird. Das ist also nicht anders.

Aber in der Tat ist der Inhalt dieser beiden exe.config-Dateien (fast) genau gleich; Der einzige Unterschied besteht darin, dass die Datei exe.config für den fehlgeschlagenen Aufruf höhere Werte für die Attribute maxBufferSize und maxReceivedMessageSize des Bindungselements sowie einen größeren Wert für sendTimeout aufweist.

Antwort

6

Dies ist nicht wirklich eine Antwort, es ist eine Erklärung.

Das Problem ist, dass von den beiden oben genannten Clients eine Windows Forms App auf dem Desktop und die andere ein Windows Service war. Beide verwendeten die gleiche Codebasis (d. H. Instanz einer Klasse) und fast die gleichen app.config-Dateien.

ABER der Dienst unter dem SystemAccount angemeldet - und auf einigen Websites scheint dies nicht die Rechte/Profil für den Zugriff auf das Internet zu haben, und so konnte es den Web-Service-Endpunkt nicht finden. Offensichtlich. Wenn du weißt.

+0

Wie haben Sie das behoben? – BlueChippy

+0

Ich kann mich nicht erinnern, wie ich diesen tatsächlichen Fall behoben habe, aber es gibt mindestens zwei Lösungen - entweder das SystemAccount, um auf das Internet zugreifen zu können, oder den Dienst, um sich so einzuloggen, dass er Zugriff auf das Internet erhält Internet. – Peter