从Asp.net WebApi消费WCF服务

时间:2012-07-10 20:52:22

标签: wcf asp.net-web-api

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

我在asp.net webapi项目中创建了一个Web引用。但似乎没有代理生成。

我尝试使用VS 2012 RC,然后使用VS 2010.我无法从模型/控制器中的任何位置引用它。在MVC webapi中是否有另一种创建代理的方法。我不知道出了什么问题。

是否必须执行某些操作,例如我无法从休息服务中使用wcf服务

我在这里缺少的是什么。

感谢。

2 个答案:

答案 0 :(得分:3)

尝试添加服务引用而不是Web referance,该引用用于不推荐使用的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);
    }
    
  5. 浏览时

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

    我收到了

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

答案 1 :(得分:1)

如果添加了服务引用但是reference.cs生成为空,则可能是类型冲突的问题。以下解决方案为我工作。

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

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