WCF используется как WebService добавляет логический параметр? - PullRequest
10 голосов
/ 10 февраля 2009

Я создал Службу WCF по умолчанию в VS2008. Это называется "Service1"

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;
    }
}

Работает нормально, интерфейс IService1:

[ServiceContract]
public interface IService1
{

    [OperationContract]
    string GetData( int value );

    [OperationContract]
    CompositeType GetDataUsingDataContract( CompositeType composite );

    // TODO: Add your service operations here
}

Это все по умолчанию; Visual Studio 2008 все это создал.

Затем я создал простое приложение Winforms, чтобы «проверить» это. Я добавил ссылку на сервис в мой вышеупомянутый сервис, и все это работает. Я могу создать экземпляр и вызвать myservice1.GetData (100); и я получаю результат.

Но мне сказали, что эта служба должна использоваться приложением Winforms .NET 2.0 через веб-службы, поэтому я продолжил добавлять ссылку на новое приложение Winforms .NET 2.0, созданное с нуля (только одна форма win, называемая form1). ). На этот раз при добавлении «веб-ссылки» он добавил типичный «локальный», принадлежащий веб-сервисам; Мастер увидел Службу WCF (работает в фоновом режиме) и добавил ее.

Когда я попытался использовать это, я обнаружил, что метод GetData (int) теперь был GetData (int, bool).

Вот код

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

Заметили ложь в вызове GetData?

Я не знаю, что это за параметр или откуда он взят, он называется "bool valueSpecified".

Кто-нибудь знает, откуда это? Что-нибудь еще, что я должен сделать, чтобы использовать Службу WCF как WebService от .NET 2.0? (WinForms).

1 Ответ

11 голосов
/ 10 февраля 2009

Ну, хорошо ... очевидно вот ответ и возможные решения или обходные пути.

...