2012-07-10 110 views
2

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

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

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

它必须做像我不能消耗从静止服务

WCF服务是什么,我很想念这里的东西。

谢谢。

回答

1

尝试添加服务引用而不是Web参考(用于不推荐使用的ASP.NET Web服务(ASMX))。

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

  1. 创建一个新的ASP.NET MVC 4 Web应用程序并选择Web API项目模板。
  2. 向解决方案添加了WCF服务应用程序项目。请记住,在为其添加服务引用之前构建它。
  3. 在Web APi项目中,我添加了对WCF服务的服务引用。
  4. public string Get(int id) 
    { 
        var serviceReference1 = new ServiceReference1.Service1Client(); 
        return serviceReference1.GetData(id); 
    } 
    

替换ValuesController.Get(INT ID)的代码在浏览

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

我收到

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

我在我的Asp.net WebApi项目中添加了一个服务引用,但是我不能在项目的任何部分引用它。这是非常奇怪的行为。我怀疑归咎于WSDL代,因为我可以在其他项目中引用Service来加速这个WebApi项目。 – Tabish 2012-07-11 14:33:49

+0

“添加服务引用”完成没有错误?新创建的服务引用是否出现在解决方案资源管理器中的服务引用文件夹下? – Martin4ndersen 2012-07-12 17:45:28

+1

是的,它确实发生。即使我可以更新服务。我观察到web.config中没有记录,就像我们从客户端使用WCF服务时那样。我无法在我的模式或控制器中访问它。我试着在对象浏览器中查看它..不能在那里看到它。 – Tabish 2012-07-12 19:16:57

1

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

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

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