Я не могу позвонить в мой веб-сервис из приложения C # Forms - PullRequest
3 голосов
/ 18 июля 2009

У меня есть веб-сайт с простым веб-сервисом. Я могу позвонить в веб-сервис успешно из JavaScript на странице. Мне нужно иметь возможность вызывать тот же веб-сервис из приложения C # формы. Код веб-сервиса очень прост:

[WebService(Namespace = "http://myurl.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class IDCService : System.Web.Services.WebService {

    public IDCService () {
    }

    [WebMethod]
    public string HelloWorld() {
        return "Hello World";
    }

Мой javascript работает:

        function HelloWorld() {
            var yourName = $get('txtYourName').value;
            alert(yourName);
            IDCService.HelloWorld(HelloWorldCalback, failureCB);
        }

        function HelloWorldCalback(result) {
            alert(result);
        }

        function failureCB(result) {
            alert("Failed");
        }

Однако, когда я пытаюсь установить ссылку на WS в моем C # -коде, то, что я ожидаю увидеть, это объект с методом "HelloWorld", то, что я на самом деле вижу, это объект со свойствами, такими как "HelloWorldRequest", " HelloWorldResponse "," HelloWorldRequestBody "и т. Д.

Я новичок в веб-сервисах и очень растерялся. Любая помощь будет оценена.

1 Ответ

5 голосов
/ 18 июля 2009

Зависит от того, как вы добавили свою ссылку: -)

Если вы добавили его, нажав «Добавить веб-ссылку», вы указали местоположение службы и дали ей пространство имен - давайте предположим, что оно будет называться «MySVC».

В этом случае вы должны быть в состоянии сделать это в своей программе Winforms:

MySVC.MyTestService svc = new MySVC.MyTestService();
string message = svc.HelloWorld();

и, таким образом, получить выходные данные метода HelloWorld.

С другой стороны, если вы нажмете «Добавить ссылку на службу» (которая не такая же - это добавит прокси на стороне клиента WCF к вашему веб-сервису), то вы получите классы объектов запроса и ответа. Вы должны также получить класс xxxxClient, и вот что вы будете использовать:

MyWCFService.MyTestServiceSoapClient client = 
     new MyWCFService.MyTestServiceSoapClient();
string message = client.HelloWorld()

Таким образом, вы также сможете получить доступ ко всем своим методам в веб-службе.

Марк

...