从Asp.net WebApi消费WCF服务

4
我正在创建一个Asp.net Webapi来提供我们的服务。与此同时,我需要从现有的WCF服务中获取一些数据。
我在我的asp.net webapi项目中创建了一个web引用,但似乎没有生成代理。
我尝试了VS 2012 RC和VS 2010,但无法在项目的任何地方从我的模型/控制器引用它。在MVC Webapi中创建代理是否有不同的方法?我不知道出了什么问题。
这是否与我无法从REST服务使用WCF服务有关?
我在这里缺少什么?
谢谢。
2个回答

3
尝试添加服务引用而不是网络引用,后者已被弃用于ASP.NET Web Services (ASMX)。我刚刚尝试了这个方法,它按预期工作。以下是我的操作步骤:
  1. Created a new ASP.NET MVC 4 Web Application and selected the Web API project template.
  2. Added a WCF Service Application project to the solution. Remember to build this before adding a service reference to it.
  3. In the Web APi project, I added a service reference to the WCF service.
  4. Replaced the code in ValuesController.Get(int id) with

    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项目。 - Tabish Sarwar
“Add Service Reference” 是否能够顺利完成?新创建的服务引用是否出现在解决方案资源管理器中的“服务引用”文件夹下方? - Martin4ndersen
1
是的,它确实发生了。我甚至可以更新服务。我观察到在从客户端使用时,Web.config中没有像我们在WCF服务中使用的记录。我无法在我的模型或控制器中访问它。我尝试在对象浏览器中查看它...但也看不到它。 - Tabish Sarwar
1
你需要哪些 using 语句才能访问 ServiceReference1?我找不到它 - 需要任何帮助!我正在尝试从 ASP.NET-MVC4 web 应用程序获取 wcf 服务。 - Andriy Drozdyuk

1
如果您的服务引用已添加但reference.cs生成为空,则可能存在某些类型冲突问题。以下解决方法适用于我。
要更正它,请右键单击服务引用,单击配置服务引用。在配置屏幕上,取消选中“重用已引用程序集中的类型”。如果没有强制更新,则应自动更新服务引用。
这应该正确生成reference.cs文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接