如何在ASMX服务客户端上调用方法

时间:2015-09-06 09:58:18

标签: c# web-services rest

我使用名为GetLastVehicle()的WebMethod编写了一个Web服务,并将其部署在IIS上。当我在浏览器中转到该地址时,我可以看到并使用该方法。

当我将Web服务作为服务引用添加到我的项目并想要使用它时,我看不到我的方法。取而代之的是GetLastVehicleRequestGetLastVehicleRequestBodyGetLastVehicleResponseGetLastVehicleResponseBody

这是服务方法:

[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;
}

如何从我的客户处拨打电话?

1 个答案:

答案 0 :(得分:2)

您需要实例化代理并调用方法:

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

无论如何,您不应该在ASMX Web服务中编写新服务。由John Saunders提供:

  

ASMX是一项传统技术,不应用于新开发。 WCF或ASP.NET Web API应该用于Web服务客户端和服务器的所有新开发。一个提示:微软已经退出了MSDN上的ASMX论坛。