在我的项目中,我需要从 Controller 调用 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*** 返回之后,所以我没有得到结果。如何实现“从 Controller 调用 web 服务”.. 有什么想法吗?
最佳答案
最后我成功地从 MVC Controller 调用了 web 服务。
注:添加 ServiceReference 而不是 WebReference 并避免
“Task.Factory.StartNew(()=>);”过程。
[Httppost]
public ActionResult login(logmodel model)
{
Wservice.ServiceSoapClient _host = new Wservice.ServiceSoapClient("ServiceSoap");
var result_out = _host.login(uname, pwd, "test1", "test2", "test3", "test4");
}
这里的“ServiceSoap”是我们服务的一个端点。你可以在 app.confiq 或 web.config 文件中显示端点。
快乐编码...!
关于asp.net-mvc - 我如何从 MVC3 Razor Controller 调用 web 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17124304/