Веб-сервис .Net, как получить доступ ...? - PullRequest
1 голос
/ 22 октября 2008

Примечание. Я просто использую веб-сервис. У меня нет контроля над кодом веб-сервиса.

Так что в .net 2.0 я ссылаюсь на веб-сервис и вижу класс в пространстве имен веб-сервиса, скажем, foobar. Это определяется как:

public class foobar : System.Web.Services.Protocols.SoapHttpClientProtocol

но в .net 3.5, когда я добавляю ссылку на тот же веб-сервис, у меня больше нет этого класса foobar. Я вижу foobarSoap, который представляет собой интерфейс, который предоставляет все методы в классе foobar выше. Это определяется как:

public interface foobarSoap

Однако он не раскрывает свойства (по понятным причинам).

Мне нужно получить доступ к этим свойствам. Как мне это сделать?

Ответы [ 4 ]

1 голос
/ 22 октября 2008

Вы можете попробовать использовать Языковой инструмент описания веб-сервисов (Wsdl.exe) для создания фактического файла класса:

wsdl.exe /language:cs http://www.example.com/FooService.wsdl

Вы можете получить больше информации о WSDL Tool на его MSDN Page .

0 голосов
/ 15 декабря 2008

У меня была похожая проблема при обновлении с 2005 до 2008. Я думаю, что вам не хватает, когда вы нажимаете «Добавить ссылку на сервис», появляется новое диалоговое окно. нажмите кнопку «Дополнительно» внизу, затем в следующем диалоговом окне нажмите кнопку «Добавить веб-ссылку» внизу в разделе совместимости. Тогда вы получите диалог, к которому вы, скорее всего, привыкли, и у вас будут стандартные прокси-классы 2.0.

0 голосов
/ 22 октября 2008

Я только что создал пример проекта и создал веб-прокси для службы, используя меню Добавить ссылку на службу:

http://www.xmlme.com/WSShakespeare.asmx

Visual Studio 2008 сгенерировал интерфейс и прокси-класс на основе WSDL. Например, у меня есть класс ShakespeareSoapClient, который реализует интерфейс ShakespeareSoap.

Кажется, работает нормально. Я что-то упустил?

0 голосов
/ 22 октября 2008

У меня странное ощущение, что свойства не будут частью определения службы (WSDL), что может означать, что вы не сможете их использовать. Если возможно, попытайтесь убедить тех, кто когда-либо поддерживает службу, выставлять свойства как фактические методы.

Вполне вероятно, что вы не сможете получить доступ к свойствам, и в этом случае вам просто не повезет. К сожалению.

Я попытаюсь выставить свойство, а затем сообщу о результатах здесь.

РЕДАКТИРОВАТЬ: Невозможно выставить свойство интерфейса с помощью WCF, оно просто не будет компилироваться

[ServiceContract]
public interface IFooService
{
    [OperationContract] // This is not allowed, it will not compile
    string Name { get; set; }
}

РЕДАКТИРОВАТЬ: Нельзя также сделать с помощью веб-служб ASMX. : (

[WebService(Namespace = "http://tempuri.org/")]
public class FooService : System.Web.Services.WebService
{
    [WebMethod] // This is not allowed, it will not compile
    string Name { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...