2015-09-06 53 views
0

我用一個名爲GetLastVehicle()的WebMethod編寫了一個Web服務,並將它部署在IIS上。當我到瀏覽器中的地址時,我可以看到並使用該方法。如何在ASMX服務客戶端上調用方法

當我將Web服務作爲服務引用添加到我的項目並想要使用它時,我看不到我的方法。取而代之的是GetLastVehicleRequest,GetLastVehicleRequestBody,GetLastVehicleResponseGetLastVehicleResponseBody

這是服務方法:

[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論壇。

+0

我只是模擬尚未到達我們的設備。順便說一句,當我使用你的代碼'var client = new WimWebService(); '我得到一個錯誤,告訴'WimDataLogger.WimWebService'是一個'命名空間',但是像'type'一樣使用 –

+0

這是因爲客戶端被稱爲'WimDataLogger.WimWebService.WimDataLogger.WimWebServiceClient',或者您生成客戶端的任何命名空間(像'ServiceReference1.WimWebServiceClient')。 – CodeCaster

相關問題