Warum ist das WCF-Dienst erkennt nicht die UriTemplate parameter?
Habe ich die folgenden RESTful WCF service, der funktioniert nur gut, wenn Sie es im VS.
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/sales/start={start}&end={end}")]
List<Sales> GetSalesByDate(string start, string end);
Jedoch, wenn Sie die Bereitstellung dieser auf meinem test-server (mit Win2K3 und IIS6) erhielt ich folgende server-Fehler:
Betrieb 'GetSalesByDate' im Vertrag 'ISalesService' verwendet, aber auch Körper-parameter 'start'. GET-Operationen können einen Körper haben. Entweder stellen Sie die parameter 'start' ein UriTemplate-parameter oder Schalter aus WebGetAttribute zu WebInvokeAttribute.
Natürlich habe ich schon gemacht 'start' ein UriParameter. Also kann mir jemand sagen, warum eine exception geworfen wird?
BEARBEITEN:
Als Referenz, hier ist meine Konfiguration Datei:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<services>
<service name="Services.SalesService">
<endpoint behaviorConfiguration="webBehavior"
binding="webHttpBinding"
contract="Services.ISalesService"/>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es stellt sich heraus
/sales/start={start}&end={end}
ist keine gültige Uri (duh!). Nach ein wenig Versuch und Irrtum habe ich endlich erkannt. Optimieren der UriTemplate mit einem '?' das problem gelöst.Vielen Dank für Ihre Hilfe!
Ich weiß, es ist wirklich spät, aber warum hast du nicht verwenden Sie das folgende format.
Ich Wette, es ist, dass der dev-Maschine hat SP1 und auf dem server nicht.
http://blogs.msdn.com/endpoint/archive/2008/08/22/rest-in-wcf-part-ix-controlling-the-uri.aspx