2009-02-10 18 views
10

VS2008'deki varsayılan WCF Hizmeti'ni oluşturdum. Bu "Hizmet1"WCF bir boole parametresi ekler?

public class Service1 : IService1 
{ 
    public string GetData(int value) 
    { 
     return string.Format("You entered: {0}", value); 
    } 

    public CompositeType GetDataUsingDataContract(CompositeType composite) 
    { 
     if (composite.BoolValue) 
     { 
      composite.StringValue += "Suffix"; 
     } 
     return composite; 
    } 
} 

Düzgün çalışır, arayüz IService1 olduğunu denir:

[ServiceContract] 
public interface IService1 
{ 

    [OperationContract] 
    string GetData(int value); 

    [OperationContract] 
    CompositeType GetDataUsingDataContract(CompositeType composite); 

    // TODO: Add your service operations here 
} 

Bu varsayılan olarak tüm olup; Visual Studio 2008 tüm bunları oluşturdu.

Daha sonra bunu "test etmek" için basit bir Winforms uygulaması oluşturdum. Servis Referansını yukarıda bahsedilen hizmetime ekledim ve hepsi işe yarıyor. Ben instanciate ve myservice1.GetData (100); ve sonucu aldım.

Ancak bu hizmetin Web Hizmetleri aracılığıyla bir Winforms .NET 2.0 uygulaması tarafından tüketilmesi gerekeceği söylendi, bu yüzden sıfırdan oluşturulmuş yeni bir Winforms .NET 2.0 uygulamasına başvuru eklemeyi denedim (yalnızca bir winform denir) form1). Bu kez, "web referansı" eklenirken, web servislerine ait tipik "localhost" eklenir; Sihirbaz WCF Servisi'ni gördü (arka planda çalışıyor) ve ekledi.

Bunu tüketmeye çalıştığımda, GetData (int) yönteminin şimdi GetData (int, bool) olduğunu öğrendim.

İşte

private void button1_Click(object sender, EventArgs e) 
    { 
     localhost.Service1 s1 = new WindowsFormsApplication2.localhost.Service1(); 
     Console.WriteLine(s1.GetData(100, false)); 
    } 

Bildirim GetData çağrısında sahte kod var?

Bu parametrenin ne olduğunu veya nereden geldiğini bilmiyorum, buna "bool valueSpecified" denir.

Bunun nereden geldiğini bilen var mı? WCF Hizmetini .NET 2.0'dan bir Web Hizmeti olarak kullanmak için başka bir şey yapmalı mıyım? (Win).

cevap

11

Çok iyi… Görünüşe göre here's cevabı ve olası çözümleri veya çözümleri.

+0

XML serileştirme ile aynı uyarısı :) – leppie

+0

Cevabınızı tekrar tekrar cevaplayabilirsem, yapardım. 2 saat boyunca, neden .NET 2.0 WCF hizmetinden .NET 2.0'a bir hizmete girdiğimi ve değiştirdiğim parametrelerin "hiçbir şey" sürümlerini aldığımı merak ettim. Bu keyfi booleanları görmüştüm ve hiçbir şey düşünmedim. Teşekkürler v.much! – SpaceBison

+0

@SpaceBison - sizin için upvoted :) – Frozenskys