【问题标题】:Consuming WCF Service from Asp.net WebApi从 Asp.net WebApi 使用 WCF 服务
【发布时间】:2012-07-10 10:15:33
【问题描述】:

我正在为我们的服务创建一个 Asp.net Webapi。另一方面,我必须从现有的 WCF 服务中提取一些数据。

我正在我的 asp.net webapi 项目中创建一个 Web 引用。但是好像没有生成代理。

我尝试使用 VS 2012 RC,然后使用 VS 2010。我无法从项目中的任何位置从我的模型/控制器中引用它。在 MVC webapi 中创建代理是否有不同的方法。不知道怎么回事。

它是否必须做一些事情,比如我不能从休息服务中消费 wcf 服务

我在这里缺少什么。

谢谢。

【问题讨论】:

    标签: wcf asp.net-web-api


    【解决方案1】:

    尝试添加服务引用而不是 Web 引用,后者用于已弃用的 ASP.NET Web 服务 (ASMX)。

    我刚试过这个,它按预期工作。这是我所做的:

    1. 创建了一个新的 ASP.NET MVC 4 Web 应用程序并选择了 Web API 项目模板。
    2. 向解决方案添加了 WCF 服务应用程序项目。记得在添加服务引用之前构建它。
    3. 在Web APi 项目中,我添加了对WCF 服务的服务引用。
    4. 将 ValuesController.Get(int id) 中的代码替换为

      public string Get(int id)
      {
          var serviceReference1 = new ServiceReference1.Service1Client();
          return serviceReference1.GetData(id);
      }
      

    浏览时

    http://localhost:<port>/api/values/2
    

    我收到

    <?xml version="1.0" encoding="utf-8"?><string>You entered: 2</string>
    

    【讨论】:

    • 我在我的 Asp.net WebApi 项目中添加了一个服务引用,但我无法在项目的任何部分引用它。这是非常奇怪的行为。我怀疑将 WSDL 生成归咎于我,因为我可以在除此 WebApi 项目之外的其他项目中引用服务。
    • “添加服务参考”完成没有错误?新创建的服务引用是否出现在解决方案资源管理器的 Service References 文件夹下?
    • 是的,它确实发生了。即使我可以更新服务。我观察到 web.config 中没有记录,就像我们过去从客户端使用 WCF 服务时那样。我无法在模态或控制器中访问它。我尝试在对象浏览器中查看它.. 也看不到它。
    • 您需要在ServiceReference1 获得哪些using 语句???我找不到它 - 任何帮助表示赞赏!我正在尝试从 ASP.NET-MVC4 网络应用程序获取 wcf 服务。
    【解决方案2】:

    如果您的服务引用已添加,但 reference.cs 生成为空,则可能是类型冲突的问题。以下解决方法对我有用。

    要更正它,请右键单击服务引用,然后单击配置服务引用。在配置屏幕上,取消选中“在引用的程序集中重用类型”。如果没有强制更新,它应该会自动更新服务引用。

    这应该会适当地生成 reference.cs 文件。

    【讨论】:

      猜你喜欢
      • 2012-02-15
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      • 2016-12-18
      • 2014-02-24
      • 2017-10-06
      • 2020-07-24
      相关资源
      最近更新 更多