在我的项目中,我需要从控制器调用 Web 服务。我已经完成了以下操作,并且有效。
将 Web 服务的 Web 引用添加到项目中。
调用服务如下:
Service Wservice=new Service(); Wservice.loginCompleted+=new Wservice_login_Completed; WService.login_Async("username","Password");
注意:每当我调用此服务时,它都会抛出一个错误,即“此时无法启动异步操作。异步操作只能在异步处理程序或模块内或在页面生命周期中的某些事件期间启动。如果此异常发生在执行一个页面,确保该页面被标记为 <%@ Page Async="true" %>。"
为了克服这个问题,我使用
[Httppost]
public ActionResult login(logmodel model)
{
Task.Factory.StartNew(() =>
{
Wservice.loginCompleted+=new Wservice_login_Completed;
WService.login_Async("username","Password");
});
if(finalresult==true)
{
*** return View();
}
}
void Wservice_login_completed()
{
Here i got the output.
}
但是 Wservice_login_completed() 函数的调用是在 View*** 返回之后,所以我没有得到结果。如何实现“从控制器调用 web 服务”.. 有什么想法吗?