2015-09-21 2 views
0

Это кажется очень тривиальным, но он не работает для меня вообще. Я пытаюсь вызвать soap web service из моего консольного приложения C#. Приложение построено для .net 4.5. Вот что я сделал:C# вызов SOAP webservice из консольного приложения

  • Добавлена ​​справочная служба по проекту в визуальной студии 2013, направив его в WSDL. Он находит Сервис, и он работает нормально.
  • Попытка создать экземпляр этой службы, выполнив следующие действия:
  ServiceReference1 s = new ServiceReference1(); 

я получаю следующий код ошибки:

Project1.ServiceReference1 is a 'namespace' but is used like a 'type' 

Любые идеи? Я искал это некоторое время и не могу встретить кого-то, имеющего ту же проблему, с реальным решением. Я предоставлю дополнительную информацию.

+0

Если имя класса является ServiceRefrence1, и вы вызывали фактическое обращение ServiceRefrence1 к его ServiceReference1.ServiceReference1 –

ответ

0

Когда вы создаете ссылку на службу, Visual Studio 2013 создаст прокси-класс, который вы можете использовать для прозрачного вызова в службу. Пространство имен прокси-сервера по умолчанию: your_project_name.ServiceReference1. Тип - это имя вашего сервиса.

Для примера сервис http://localhost/YourService.svc. Вы создаете ссылку на обслуживание ServiceReference1 с вашего консольного проекта ConsoleApp. Сгенерированные файлы имеют пространство имен ConsoleApp.ServiceReference1. Тип: YourService.

var service = new ServiceReference1.YourService(); 

возвращает экземпляр прокси-сервера, созданного Visual Studio. Затем вы сможете вызвать любой из методов службы.

+0

Хорошо, что кажется моей проблемой. Я точно не знаю имя службы (в вашем примере, YourService). Intellisense также не предлагает этого. Знаете ли вы, что в прокси-классе где-нибудь будет содержаться необходимая информация? – user1791865

+0

Вы должны иметь возможность навести курсор на пространство имен и нажать F12 (Перейти к определению). Если это не сработает, '<каталог файла проекта> \ Сервис-ссылки \ ServiceReference1 \ Reference.cs' должен иметь определение прокси-класса. – mkozicki

0

Если вы уже добавили ссылку на обслуживание в проект, вы увидите ссылку. В этом случае вы оставили имя по умолчанию «ServiceReference1».

Теперь вы хотите вызвать методы веб-службы, для этого вам нужно создать экземпляр SOAPClient.

ServiceReference1.YourWebserviceNameSoapClient client = new ServiceReference1.YourWebserviceNameSoapClient(); 
    client.HelloWorld(); // call of webmethod 

Теперь вы получаете доступ к веб-методам под объектом «клиент».

Смежные вопросы