Arkaplan
geçmişte ASMX web hizmetleri oluşturduk ve adres kuralını kullanarak istekleri GET web tarayıcısından hizmete erişmek ve Ajax mümkün olmuştur: MyService.asmx/MyMethod?Param=xxx
yapma GET ile bir WCF Web Service çalışma istekleri
WCF kullanmaya yeni başladım ve ASP.NET projemde yeni bir web hizmeti oluşturdum. MyService.svc gibi .svc uzantılı bir dosya oluşturur.
Mevcut Durum
Ben VS2008 ile gelir WcfTestClient
kullanarak hizmet tüketmek mümkün. Ayrıca başka bir projeye bir hizmet başvurusu ekleyerek veya proxy ve config dosyası oluşturmak için svcutil.exe
komut satırını kullanarak kendi WCF İstemcisini oluşturabiliyorum.
Sorun
Ben MyService.svc/MyMethod?MyParam=xxx
kullanarak bir tarayıcıdan hizmetini kullanmayı deneyecektir, ben herhangi bir hata olmadan boş bir sayfa olsun.
Ben
denedi Ne Zaten web.config bir basicHttpBinding eklendi ve davranış yapılandırmasında o HttpGetEnabled yaptık. Ayrıca, iş sözleşmem için [WebGet(UriTemplate = "MyMethod?MyParam={MyParam}")]
özniteliğini ekledim.
Zaten bu diğer yığın taşması söz konusu bilgiyi izlemiştir: Ancak
REST/SOAP EndPoints for a WCF Service
, ben de o adımları uyguladıktan sonra boş bir sayfa veya bir HTTP 404 hata olsun. Kod hakkında özel bir şey yok. Sadece bir string olarak bir parametre alıyorum ve "Hello xxx" i döndürüyorum. Bu temel bir "Hello WCF Dünya" kavram-kanıt tipi şeydir.
GÜNCELLEME - İlgili kod var
[ServiceContract]
public interface IMyService
{
[WebGet(UriTemplate = "MyMethod/MyParam={MyParam}")]
[OperationContract]
string MyMethod(string MyParam);
}
Web.Config - System.ServiceModel Bölüm
<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>
Sanırım gereken tek şey endpointBehavior eklemekti. Bir çekicilik gibi çalıştı. Teşekkür ederim. – ichiban