2015-09-06 4 views
0

Я написал веб-службу с помощью WebMethod под названием GetLastVehicle() и развернул ее на IIS. Когда я перехожу к адресу в браузере, я вижу и работаю с этим методом.Как вызвать методы для клиента службы ASMX

Когда я добавляю веб-службу в качестве служебной ссылки на свой проект и хочу ее использовать, я не вижу свой метод. Вместо этого есть GetLastVehicleRequest, GetLastVehicleRequestBody, GetLastVehicleResponse и GetLastVehicleResponseBody.

Это метод обслуживания:

[WebMethod] 
public Vehicle GetLastVehicle() 
{ 
    Random rnd = new Random(); 
    Vehicle lastVehicle = new Vehicle(); 
    lastVehicle.ID = rnd.Next(); 
    lastVehicle.StartTimeStr = DateTime.Now.ToString(); 
    lastVehicle.Direction = Convert.ToBoolean(rnd.Next(0, 1)); 
    lastVehicle.VehicleLength = float.Parse(rnd.Next(2, 6).ToString()); 
    lastVehicle.GrossWeight = float.Parse(rnd.Next(1200,12000).ToString()); 
    lastVehicle.Velocity = float.Parse(rnd.Next(50, 140).ToString()); 
    lastVehicle.WheelBase = float.Parse(rnd.Next().ToString()); 
    lastVehicle.AxlesCount = rnd.Next(2, 9); 
    List<Axle> lastVehicleAxles = new List<Axle>(); 
    for (int i = 0; i < lastVehicle.AxlesCount; i++) 
    { 
     Axle axle = new Axle(); 
     axle.Weight = rnd.Next(500, Convert.ToInt32(lastVehicle.GrossWeight/lastVehicle.AxlesCount)); 
     if (i == 0) 
      axle.Distance = 0; 
     else 
      axle.Distance = rnd.Next(1, Convert.ToInt32(lastVehicle.VehicleLength/lastVehicle.AxlesCount) > 1 ? Convert.ToInt32(lastVehicle.VehicleLength/lastVehicle.AxlesCount) : 1); 
     lastVehicleAxles.Add(axle); 
    } 
    lastVehicle.Axles = lastVehicleAxles; 
    return lastVehicle; 
} 

Как я могу назвать это от моего клиента?

+0

Можете ли вы опубликовать объявление своего метода? –

ответ

2

Вам нужно создать экземпляр методов прокси и вызова на что:

var client = new YourServiceClient(); 
GetLastVehicleResponse getLastVehicleResponse = client.GetLastVehicle(); 

В любом случае вы не должны писать новые услуги в ASMX Web Services. Предоставлено John Saunders:

ASMX - это устаревшая технология и не должна использоваться для новой разработки. WCF или ASP.NET Web API должны использоваться для всех новых разработок клиентов и серверов веб-сервисов. Один из намеков: Microsoft отстранила ASMX Forum от MSDN.

+0

Я просто моделирую устройство, которое еще не пришло к нам. кстати, когда я использую ваш код 'var client = new WimWebService(); 'Я получаю сообщение об ошибке, которое говорит о том, что« WimDataLogger.WimWebService »является« пространством имен », но используется как« тип » –

+0

Это потому, что клиент называется« WimDataLogger.WimWebService.WimDataLogger.WimWebServiceClient »или любое пространство имен, которое вы создали клиент в (например, 'ServiceReference1.WimWebServiceClient'). – CodeCaster

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