2011-10-03 4 views
0

Je dispose d'un service Web très basique utilisant WCF (C#, .NET 4.0) pour renvoyer un message Hello.Configurer le modèle de service pour WCF

Le déploiement sous IIS 7 et en cours d'exécution, il est ok, mais quand je fais svcutil.exe http://localhost:4569/Service.svc?wsdl par le CMD pour tester le webservice je reçois:

the remote server returned an error: 415 cannot proccess the message because the content type 'aplication/soap+xml charset=utf8' was not the expected type 'text/xml charset=utf8'

Lorsque vous essayez d'ajouter la référence de service (pour créer un client) Je reçois

An existing connection was forcibly closed by the remote host Metadata contains a reference that cannot be resolved: 'http://localhost:4569/Service.svc'. Content Type application/soap+xml; charset=utf-8 was not supported by service http://localhost:4569/Service.svc . The client and service bindings may be mismatched. The remote server returned an error: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'..

Je suis assez sûr que le problème est sous mon fichier web.config:

<configuration> 
     <system.web> 
     <compilation debug="true" targetFramework="4.0" /> 
     </system.web> 
     <system.serviceModel> 
<services> 
     <service name="Service"> 
      <endpoint name="soap" 
       address="http://localhost:4569/Service.svc" 
       binding="basicHttpBinding" 
       contract="IService" /> 
      <endpoint name="mex" address="mex" binding="mexHttpBinding" 
         contract="IMetadataExchange" /> 
     </service> 
     <behaviors> 
      <serviceBehaviors> 
       <behavior> 
        <serviceMetadata httpGetEnabled="true"/> 
        <serviceDebug includeExceptionDetailInFaults="false"/> 
       </behavior> 
      </serviceBehaviors> 
</services> 
     </behaviors> 
     <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
     </system.serviceModel> 
     <system.webServer> 
     <modules runAllManagedModulesForAllRequests="true"/> 
     </system.webServer> 
    </configuration> 
Quoi qu'il en soit

, voici mon code:

IService.cs:

[ServiceContract] 
public interface IService 
{ 
    [OperationContract] 
    string getMessage(); 
} 

Mon service.cs a la méthode

public class Service : IService 
{ 
    public string getMessage() 
    { 
     return "Ola servico"; 
    } 
} 

Je ne sais vraiment pas ce qui se passe, a fait quelques tests après quelques recherches mais pas de succès.

Service.svc

<%@ ServiceHost Language="C#" Debug="true" Service="Service" CodeBehind="~/App_Code/Service.cs" %>   
+2

Vous ne nous montrez pas les parties ** intéressantes ** (et ** importantes **) de votre config! La section '' de '' côté serveur et le contenu du fichier * .svc! S'il vous plaît ajouter ces - sinon nous sommes laissés deviner au mieux .... –

+1

est-ce le fichier de configuration complet? les services, les liaisons et les points de terminaison sont-ils définis dans le code? – MLT

+0

Le message d'erreur indique que vous mélangez SOAP et REST. Il semble que vous voulez récupérer un WSDL, mais il semblerait que vous utilisez la liaison REST ('webHttpBinding') .... –

Répondre

1

Vous avez pas de service et le point final défini dans votre configuration. Essayez d'ajouter

<services> 
    <service name="Service"> <!-- name should match the name in your .svc file (if you open it with a text editor) --> 
    <endpoint name="soap" address="" binding="basicHttpBinding" contract="IService" /> 
    <endpoint name="mex" address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 
</services> 
+0

J'ai essayé DonAndre, mais il ne fonctionne pas. Edité ma question à l'article de services de toute façon, – Tiago

+0

La configuration ne fonctionne pas comme vous a affichée. Les services doivent être fermés avant les comportements. L'adresse de votre point de terminaison de savon doit être une chaîne vide, parce que cela fait référence à ce qui vient après la .svc dans l'URL. – Andreas

+0

@I savent, le code ne compile même pas de cette façon, ce fut une erreur de mettre là-bas, mais dans mon code est correct. – Tiago

Questions connexes