Вызов веб-сервиса со сложными параметрами из клиента c # - PullRequest
0 голосов
/ 26 января 2012

Здравствуйте, вот класс ...

Аутентификация в публичном классе {

    private string userField;
    private string passwordField;
    public string user
    {
        get
        {
            return this.userField;
        }
        set
        {
            this.userField = value;
        }
    }

    public string password
    {
        get
        {
            return this.passwordField;
        }
        set
        {
            this.passwordField = value;
        }
    }

}

здесь веб-сервис:

[WebMethod]
public Vehicle[] getVehiculeList(Authentification authentification)
{
....
}

Здесь клиент и вызов веб-сервиса: (Определен тот же класс, что и в веб-сервисе)

Authentification azz = new Authentification() ;
azz.user = "toto";
azz.password = "tata";
string aa = ws.getVehiculeList(azz);

выдает ошибку: Ошибка 27 Наилучшее совпадение перегруженного метода для 'WSCL.localhost.Service1.getVehiculeList (WSCL.localhost.Authentification)' имеет недопустимые аргументы

и

Ошибка 28 Аргумент «1»: невозможно преобразовать из «WSCL.Authentification» в «WSCL.localhost.Authentification»

Любая помощь?

Спасибо большое!

1 Ответ

1 голос
/ 27 января 2012

Возможно, вы ссылались на сборку, содержащую объекты данных (например, Аутентификация) на вашем клиенте, и теперь у вас есть как проксируемая сущность (WSCL.localhost.Authentification), так и исходная сущность сервера (WSCL.Authentification).Если вы измените использование вашего клиента Authentication для использования прокси-класса (WSCL.localhost.Authentification), он должен работать.

Если вы переключитесь на WCF, вы сможете переместить объекты данных, такие как Authentication, в отдельную сборку,а затем поделитесь этим же типом между вашей службой и вашим клиентом.AFAIK, это невозможно "из коробки" в ASMX .

...