asp.net-mvc - 我如何从 MVC3 Razor Controller 调用 web 服务?

标签 asp.net-mvc asp.net-mvc-3 web-services

在我的项目中,我需要从 Controller 调用 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(()=>);”过程。

      [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/

    相关文章:

    c# - 返回旧 Web 方法的 ASMX 页面

    c# - OWIN/Katana中间件经典asp页面跳过管道

    ajax - 使用 ajax 表单上传 mvc3 文件 - Request.Files 为空

    asp.net-mvc-3 - 用于 asp.net MVC 聊天应用程序的 signalR 与 html5 websockets

    javascript - jquery - 加载时不引人注目的验证 javascript 错误 - $jQval 未定义

    jquery - MVC 3 Razor - Ajax.BeginForm OnSuccess

    web-services - Spring Restful Web 服务的安全性

    c# - MVC OutputCaching 是否优先于设置缓存响应 header ?

    c# - MVC 阻止更新某些字段

    html - 我将如何收集尽可能多的文本 : "[subject] are ..." from the web? 实例