我有一個ASMX服務。我想收到它的回覆。我的代碼如下:如何從ASMX服務獲取返回值?
public class UserService : System.Web.Services.WebService
{
[WebMethod]
public string GetPassword()
{
return "123";
}
}
我有一個ASMX服務。我想收到它的回覆。我的代碼如下:如何從ASMX服務獲取返回值?
public class UserService : System.Web.Services.WebService
{
[WebMethod]
public string GetPassword()
{
return "123";
}
}
如果您的意思是「我該如何連接到此Web服務?」你需要創建一個Visual Studio項目(我假設VS2k8這裏),無論是控制檯應用程序,Windows窗體,或幾乎任何其他
Visual Studio現在將爲您生成一個服務代理。如果你選擇了你的命名空間,例如「myNameSpace對象」,然後在Visual Studio中,您可以添加在你的代碼:
using (var client = new MyNamespace.UserService())
{
var result = client.GetPassword();
}
但我使用Silverlight :) ... client.GetPasswordAsync()...並且它的函數不返回值 – 2010-08-13 13:34:14
嗯,那是因爲你調用了Async版本的方法。因爲異步方法不會(1)直接返回它們的結果,並且(2)阻止了你的執行,所以你需要在'client.GetPasswordCompleted'方法中添加一個事件處理程序,因爲結果將會在'e.Result'中代碼直到完成。 – Rob 2010-08-13 13:53:35
號我沒有找到e.Result propetry :(我拍了一個截圖http://img205.imageshack.us/img205/4241/screenss.png我的IDE的圖片 – 2010-08-13 15:56:49
我希望你要ASMX服務連線到你的Silverlight應用程序。如果是這樣的話,你可以看看這個blog。
儘管我在我的博客中使用了WCF服務,但將服務連接到Silverlight應用程序是完全相同的。
按照博客中的步驟將ASMX服務添加爲ServiceReference。
嘗試在客戶端的代碼
private void Connect2Service()
{
ServiceReference.UserServiceClient client = new ServiceReference.UserServiceClient();
client.GetPasswordCompleted +=
new EventHandler<GetPasswordCompletedEventArgs>(client_GetPasswordCompleted);
client.GetPasswordAsync();
}
private void client_GetPasswordCompleted(object sender, GetPasswordCompletedEventArgs e)
{
// Textblock will show the output. In your case "123"
textblock.Text = e.Result;
}
非常感謝。它工作... – 2010-08-16 11:31:00
請標記爲答案,以便它也可以幫助他人。謝謝 – 2010-08-16 17:23:39
這可以很好地在UI線程上進行UI更改。但是如果我想使用PCL呢?如何從'e.Result'獲得價值並將其發回'Connect2Service'? – Rohit 2014-10-29 06:28:32
您的代碼似乎罰款。有什麼問題? – 2010-08-13 12:24:30