2009-03-28 3 views
1

Ich versuche, einen Client-Proxy aus einer WCF-Dienstbibliothek zu generieren. Ich verwende VS2005, .NET 3.0 auf einer Windows XP Pro Workstation. Der WCF-Dienst wird in einem Windows-Dienst gehostet. Wenn ich den Windows-Dienst als eine Konsolenanwendung ausführe, gibt es keine Probleme. Ich kann Svcutil.exe gegen diese Adresse ausführen und es generiert den Proxy. Wenn ich diesen Dienst jedoch im Freigabemodus kompiliere und mit InstallUtil auf der Arbeitsstation installiere, erhalte ich den Fehler "Fehler: Metadaten von net.tcp: // localhost: 9090/Service2" nicht erhalten. Dies sind die Einstellungen, die ich bin mit dem app.config für den DienstGenerieren von Client-Proxy von einem Windows-Dienst

<behaviors> 
    <endpointBehaviors> 
    <behavior name="Test2"> 
     <dataContractSerializer maxItemsInObjectGraph="2147483647" /> 
    </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
    <behavior name="serviceBehaviour"> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
     <serviceMetadata /> 
     <!--<serviceMetadata httpGetEnabled="true" />--> 
     <dataContractSerializer maxItemsInObjectGraph="2147483647" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 


<bindings> 
    <customBinding> 
    <binding name="TestBinding2" inactivityTimeout = "00:30:00" openTimeout="00:30:00" 
     receiveTimeout="00:30:00" 
     sendTimeout="00:30:00"> 
     <binaryMessageEncoding /> 
     <tcpTransport transferMode="StreamedResponse" /> 

    </binding> 
    </customBinding> 
</bindings> 

+0

Könnten Sie den gesamten "system.serviceModel" -Abschnitt Ihrer Konfiguration und vielleicht den Code, den Sie zum Starten des Windows-Dienstes verwenden, posten? –

+0

klone

+0

klone

Antwort

0

Ein paar Schüsse in der Dunkelheit ...

Wird Ihr Windows-Dienst ausgeführt? Wird Ihr WCF-Dienst darüber hinaus im Windows-Dienst ausgeführt? Mein Projekt hostet auch einen WCF-Dienst in einem Windows-Dienst (Sie können die allgemeine Schritt-für-Schritt-Anleitung here sehen). Obwohl ich den Windows-Dienst für den automatischen Start markiert habe, muss ich ihn beim ersten Mal manuell starten. Vielleicht gibt es eine Befehlszeilenoption von InstallUtil.exe, die mir nicht bewusst ist, dass dies für mich tun wird. Wenn Ihr Windows-Dienst oder Ihr WCF-Dienst nicht ausgeführt wird, können Sie den MEX-Endpunkt natürlich nicht sehen.

Die andere Sache, die ich bemerkt habe. Ihr Fehler besagt, dass die Metadaten nicht von net.tcp: // localhost: 9090/Service2 abgerufen werden können, aber die Basisadresse, die Sie in Ihrem Kommentar gepostet haben, lautet net.tcp: // localhost: 9090/Service_2. Vielleicht ist das nur ein Typ-O, aber es würde nicht schaden, zu überprüfen, ob alles richtig geschrieben ist, besonders wenn die add.config von Hand generiert wird.