J'ai un service WCF qui fonctionne sur mon serveur IIS local. Je l'ai ajouté comme référence de service à un projet de site Web C# et il s'ajoute bien et génère les classes de proxy automatiquement.
Cependant, lorsque j'essaie d'appeler l'un des contrats de service, j'obtiens l'erreur suivante :
Description : Une exception non gérée s'est produite pendant l'exécution de la requête web en cours. Veuillez consulter la trace de la pile pour plus informations sur l'erreur et son origine l'origine de l'erreur dans le code.
Détails de l'exception : System.ServiceModel.ProtocolException : Le type de contenu text/html ; charset=utf-8 du message de réponse ne correspond pas au type de contenu de la liaison (application/soap+xml ; charset=utf-8). Si vous utilisez un encodeur personnalisé, assurez-vous que la méthode méthode IsContentTypeSupported est correctement implémentée. Les 1024 premiers octets de la réponse étaient : ' fonction bredir(d,u,r,v,c){var w,h,wd,hd,bi;var b=false;var p=false;var s=[[300,250,false],[250,250,false],[240,400,false],[336,280,false],[180,150,false],[468,60,false],[234,60,false],[88,31,false],[120,90,false],[120,60,false],[120,240,false],[125,125, false],[728,90,false],[160,600,false],[120,600,false],[300,600,false],[300,125,false],[530,300,false],[190,200,false],[470,250,false],[720,300,true],[500,350,true],[550,480,true]]; if(typeof(window. innerHeight)=='number'){h=window.innerHeight;w=window.innerWidth;}seulement if(typeof(document.body.offsetHeight)=='number'){h=document.body.offsetHeight;w=document.body.offsetWidth;}for(var i=0;i
J'ai également une application console qui communique également avec le service WCF et l'application console est capable d'appeler les méthodes sans obtenir cette erreur.
Voici des extraits de mes fichiers de configuration.
Service WCF Web.Config :
<system.serviceModel>
<services>
<service name="ScraperService" behaviorConfiguration="ScraperServiceBehavior">
<endpoint address=""
binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IScraperService"
contract="IScraperService" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://example.com" />
</baseAddresses>
</host>
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IScraperService"
bypassProxyOnLocal="false" transactionFlow="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2000000" maxReceivedMessageSize="2000000"
messageEncoding="Text" textEncoding="utf-8"
useDefaultWebProxy="true" allowCookies="false">
<readerQuotas
maxDepth="2000000" maxStringContentLength="2000000"
maxArrayLength="2000000" maxBytesPerRead="2000000"
maxNameTableCharCount="2000000" />
<reliableSession
enabled="false" ordered="true" inactivityTimeout="00:10:00" />
<security mode="Message">
<message clientCredentialType="Windows"
negotiateServiceCredential="true"
algorithmSuite="Default"
establishSecurityContext="true" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="ScraperServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Site web Projet Service Client Web.Config
:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IScraperService"
closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8"
useDefaultWebProxy="true" allowCookies="false">
<readerQuotas
maxDepth="32" maxStringContentLength="8192"
maxArrayLength="16384" maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
<reliableSession enabled="false"
ordered="true" inactivityTimeout="00:10:00" />
<security mode="Message">
<transport clientCredentialType="Windows"
proxyCredentialType="None" realm="" />
<message clientCredentialType="Windows"
negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint name="WSHttpBinding_IScraperService"
address="http://example.com/ScraperService.svc"
binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IScraperService"
contract="ScraperService.IScraperService" >
<identity>
<servicePrincipalName value="host/FreshNET-II" />
</identity>
</endpoint>
</client>
</system.serviceModel>
C'est ma première tentative de création d'un WCF, donc tout est très nouveau. Toute aide est la bienvenue.
Merci.
1 votes
Comment hébergez-vous ce service ? Dans IIS ? ? Si oui, alors IIS dicte l'adresse du service - vous ne pouvez pas définir vos propres adresses de base (elles ne sont pas utilisées). Donc, si vous êtes dans IIS, l'adresse serait la suivante
http://yourserver/virtualdirectory/ScrapperService.svc
. Pouvez-vous faire un "View in Browser" sur le fichier *.svc dans l'explorateur de solutions de Visual Studio ?1 votes
J'ai essayé d'afficher le service à partir du serveur IIS et il a renvoyé une erreur DNS. Il s'est avéré que le service n'était visible qu'en interne et que lorsque mon client a essayé d'accéder au service, il n'a pas pu le faire. Tout est réglé, merci !