加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 我如何从MVC3 Razor Controller调用webservice?

发布时间:2020-12-16 03:23:01 所属栏目:asp.Net 来源:网络整理
导读:在我的项目中,我需要从控制器调用Web服务.我已经完成了以下工作,但它确实有效. 将Web服务的Web引用添加到项目中. 按以下方式呼叫服务: Service Wservice=new Service();Wservice.loginCompleted+=new Wservice_login_Completed;WService.login_Async("usern
在我的项目中,我需要从控制器调用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 ***之后,所以我没有得到结果.我如何实现“从Controller调用web服务”..任何想法?

解决方法

最后,我成功地从MVC Controller调用了web服务.

注意:添加ServiceReference而不是WebReference并避免
?????????“Task.Factory.StartNew(()=&GT);”处理.

[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文件中显示端点.快乐的编码……!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读