我使用名为GetLastVehicle()
的WebMethod编写了一个Web服务,并将其部署在IIS上。当我在浏览器中转到该地址时,我可以看到并使用该方法。
当我将Web服务作为服务引用添加到我的项目并想要使用它时,我看不到我的方法。取而代之的是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服务中编写新服务。由John Saunders提供:
ASMX是一项传统技术,不应用于新开发。 WCF或ASP.NET Web API应该用于Web服务客户端和服务器的所有新开发。一个提示:微软已经退出了MSDN上的ASMX论坛。