Hintergrund
Ich habe ASMX Dienstleistungen in der Vergangenheit Web erstellt und haben den Service aus dem Web-Browser und Ajax GET-Anfragen in der Lage für den Zugriff auf die Adresse Konvention: MyService.asmx/MyMethod?Param=xxx
Erstellen einer Web-Service-Arbeit WCF mit GET-Anforderungen
Ich habe gerade begonnen, WCF zu verwenden und einen neuen Webdienst in meinem ASP.NET-Projekt erstellt. Es erstellt eine Datei mit der Erweiterung .svc wie MyService.svc.
Aktuelle Situation
Ich kann den Dienst mit dem WcfTestClient
, die mit VS2008 kommt konsumieren. Ich bin auch in der Lage, meinen eigenen WCF-Klienten zu schaffen, indem ich entweder einen Dienstverweis in einem anderen Projekt hinzufüge oder die Befehlszeile svcutil.exe
benutze, um den proxy und die config-Akte zu erzeugen.
Das Problem
Wenn ich versuche, den Dienst von einem Browser MyService.svc/MyMethod?MyParam=xxx
mit zu verwenden, erhalte ich eine leere Seite ohne Fehler.
Was ich
versucht habe, habe ich hinzugefügt, die bereits ein basicHttpBinding zum web.config und machte es HttpGetEnabled im Verhalten Konfiguration. Ich habe auch das Attribut [WebGet(UriTemplate = "MyMethod?MyParam={MyParam}")]
zu meinem Betriebsvertrag hinzugefügt.
Ich habe bereits die Informationen in diesem anderen Stack-Überlauf Frage folgt:
REST/SOAP EndPoints for a WCF Service
Allerdings habe ich entweder eine leere Seite oder einen HTTP-Fehler 404 erhalten, nachdem diese Schritte. Es gibt nichts besonderes an dem Code. Ich nehme nur einen String als Parameter und gebe "Hello xxx" zurück. Dies ist eine grundlegende "Hello WCF World" Proof-of-Concept-Typ-Sache.
UPDATE - Hier ist der entsprechende Code
[ServiceContract]
public interface IMyService
{
[WebGet(UriTemplate = "MyMethod/MyParam={MyParam}")]
[OperationContract]
string MyMethod(string MyParam);
}
Web.Config - system.serviceModel Abschnitt
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="MyServiceBehavior" name="MyService">
<endpoint address=""
binding="wsHttpBinding" contract="IMyService" />
<endpoint address="MyService.svc"
binding="basicHttpBinding" contract="IMyService" />
<endpoint address="mex"
binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
</system.serviceModel>
Ich denke, ich brauchte nur das endPointBehavior hinzuzufügen. Es hat wie ein Zauber funktioniert. Vielen Dank. – ichiban