2010-12-18 10 views
1

Ich versuche, einen Dienst in IIS zu veröffentlichen, der auf dem ASP.NET-Entwicklungsserver erstellt und ausgeführt wird. Bei der Ausführung in IIS kann ich zu den Metadaten gelangen, indem ich zum Dienst navigiere oder in Visual Studio eine Dienstreferenz hinzufüge. Aber wenn ich eine Methode von meiner Client-App aus anrufe, stürzt sie mit einem internen Serverfehler ab. Also ging ich in das Ereignisprotokoll und fanden diese:WCF-Dienstfehler in IIS mit Metadaten

WebHost failed to process a request. 
Sender Information: System.ServiceModel.Activation.HostedHttpRequestAsyncResult/8810861 
Exception: System.Web.HttpException (0x80004005): There was no channel actively listening at 'http://mysite.net/soundhubservice.svc/$metadata'. This is often caused by an incorrect address URI. Ensure that the address to which the message is sent matches an address on which a service is listening. ---> System.ServiceModel.EndpointNotFoundException: There was no channel actively listening at 'http://mysite.net/soundhubservice.svc/$metadata'. This is often caused by an incorrect address URI. Ensure that the address to which the message is sent matches an address on which a service is listening. 
    at System.ServiceModel.Activation.HostedHttpTransportManager.HttpContextReceived(HostedHttpRequestAsyncResult result) 
    at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest() 
    at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest() 
    at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result) 
    at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) 
Process Name: w3wp 
Process ID: 1080 

Mein Web.Config etwa wie folgt aussieht:

<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    <system.serviceModel> 
    <services> 
     <service name="SoundHub.Services.SoundHubService" behaviorConfiguration="StreamingServiceBehavior"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost/SoundHubServive"/> 
      </baseAddresses> 
     </host> 
     <endpoint address="service" binding="basicHttpBinding" bindingConfiguration="httpBuffering" contract="SoundHub.Services.ISoundHubService"/> 
     <endpoint address="stream" binding="basicHttpBinding" bindingConfiguration="HttpStreaming" contract="SoundHub.Services.ISoundHubStreamService"/> 
     <!--<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />--> 
     </service> 
    </services> 

    <bindings> 
     <basicHttpBinding> 
     <binding name="HttpStreaming" maxReceivedMessageSize="67108864" transferMode="Streamed"/> 
     <binding name="httpBuffering" transferMode="Buffered" /> 
     </basicHttpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="StreamingServiceBehavior"> 
      <serviceMetadata httpGetEnabled="True"/> 
      <serviceDebug includeExceptionDetailInFaults="False"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 

    </system.serviceModel> 
<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 

</configuration> 

Versuchte mehrere Kombinationen von Einstellungen, die ich während der Suche online gefunden, aber nichts half, immer die gleicher Fehler

Dank Bruno

+0

Erhalten Sie den gleichen Fehler http://stackoverflow.com/questions/5778774/wcf-3-5-svc-service-webhost-failed-to-process-a-request –

Antwort

0

Ich hatte dieses Problem, wenn eines der Objekte, die ich eine Aufzählung zurück enthalten ist; stellt sich heraus, dass es nicht herausfinden konnte, wie es zu serialisieren ist.

Wenn das Ihr Problem ist, versuchen Sie, den int-Wert der Enumeration (oder einen String-Wert) zurückzugeben und es auf der Client-Seite in die Enumeration zurück zu werfen.