Je vais avoir quelques problèmes qui peuvent être liés ou ne peuvent pas. J'ai remarqué que lorsque j'utilise Add Service Reference dans Visual Studio pour ajouter une référence à mon service de données, le fichier reference.cs qu'il génère ne compile pas. Il se plaint d'un espace de noms manquant. Je peux le réparer à compiler, mais cela arrive chaque fois que je mets à jour la référence, et il est inquiétant sur d'autres niveaux, tels que « a cette cause d'autres problèmes ».Impossible de référencer correctement un dataservice WCF
J'ai aussi remarqué que quand je fais cela, mon serveur hôte (une application console qui héberge le service de données) enregistre ceci:
An exception occurred [System.Data.Services.DataServiceException] :: The URL
representing the root of the service only supports GET requests.
Ceci est la configuration de service:
<service behaviorConfiguration="behaviour" name="StatsPlus.Server.HostedServices.SPDataServiceHost">
<endpoint address="svc" binding="webHttpBinding" contract="System.Data.Services.IRequestHandler" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8752/DataService/"/>
</baseAddresses>
</host>
</service>
Et la comportement:
<behavior name="behaviour">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<dataContractSerializer maxItemsInObjectGraph="10"/>
</behavior>
Lorsque je tente de lancer svcutil http://localhost:8752/DataService/
, je reçois ceci:
HTTP GET Error
URI: http://localhost:8752/DataService
There was an error downloading 'http://localhost:8752/DataService'.
The request failed with HTTP status 405: Method Not Allowed.
Des idées? Très apprécié
Merci
J'ai ajouté le comportement du point de terminaison webhttp mais je ne vois aucune différence. Une autre chose dont je ne suis pas sûr, c'est que j'ai aussi un service WCF "normal" (utilisant [ServiceContract]) dans le même processus. Je me demande si cette "erreur" est en fait correcte - la référence de service semble juste essayer un tas de variantes d'URI jusqu'à ce que l'on travaille, et le code qu'il génère est très bien avec quelques modifications. Je vais essayer quelques tests de base et voir si ça marche vraiment :) – JohnL