Bul*_*nes 6 asp.net asynchronous web-services asp.net-ajax
问候!
我有一个包含WebMethod的WebService,它可以完成一些工作并返回一个布尔值.它所做的工作可能需要或可能不需要一些时间,所以我想异步调用它.
[WebService(Namespace = "http://tempuri.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class MyWebSvc : System.Web.Services.WebService
{
[WebMethod]
public bool DoWork()
{
bool succ = false;
try
{
// do some work, which might take a while
}
catch (Exception ex)
{
// handle
succ = false;
}
return succ;
}
}
Run Code Online (Sandbox Code Playgroud)
此WebService存在于Web场中的每个服务器上.因此,要在每个服务器上调用DoWork()方法,我有一个类库,基于服务器URL列表:
static public class WebSvcsMgr
{
static public void DoAllWork(ICollection<string> servers)
{
MyWebSvc myWebSvc = new MyWebSvc();
foreach (string svr_url in servers)
{
myWebSvc.Url = svr_url;
myWebSvc.DoWork();
}
}
}
Run Code Online (Sandbox Code Playgroud)
最后,这是在asp:Button点击事件中从Web界面调用,如下所示:
WebSvcsMgr.DoAllWork(server_list);
Run Code Online (Sandbox Code Playgroud)
对于Web窗体调用的静态DoAllWork()方法,我计划通过IAsyncResult使其成为异步调用.但是,我想在返回结果时报告服务器场中每个服务器的DoWork()WebMethod成功/失败.与UpdatePanel结合使用的最佳方法是什么?一个GridView?标签?静态帮助器类如何将其返回到Web窗体?
条件更新面板中的文字就可以了。
<asp:UpdatePanel ID="up" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Literal ID="litUpdateMe" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1678 次 |
最近记录: |